Function( Function { head: Destructured( FunctionHeadDestructured { ellipsis: true, identifier: None, arguments: [ FunctionHeadDestructuredArgument { identifier: "config", default: None, }, FunctionHeadDestructuredArgument { identifier: "lib", default: None, }, FunctionHeadDestructuredArgument { identifier: "pkgs", default: None, }, ], }, ), body: With( With { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 3, column: 6, }, end: Position { line: 3, column: 9, }, }, }, ), target: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "top", span: Span { start: Position { line: 6, column: 3, }, end: Position { line: 6, column: 6, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 6, column: 9, }, end: Position { line: 6, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 6, column: 16, }, end: Position { line: 6, column: 24, }, }, }, ), Raw( PartRaw { content: "kubernetes", span: Span { start: Position { line: 6, column: 25, }, end: Position { line: 6, column: 35, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cfg", span: Span { start: Position { line: 7, column: 3, }, end: Position { line: 7, column: 6, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 7, column: 9, }, end: Position { line: 7, column: 12, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "pki", span: Span { start: Position { line: 7, column: 13, }, end: Position { line: 7, column: 16, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "csrCA", span: Span { start: Position { line: 9, column: 3, }, end: Position { line: 9, column: 8, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 9, column: 11, }, end: Position { line: 9, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 9, column: 16, }, end: Position { line: 9, column: 25, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "kube-pki-cacert-csr.json", span: Span { start: Position { line: 9, column: 27, }, end: Position { line: 9, column: 51, }, }, }, ), ], span: Span { start: Position { line: 9, column: 26, }, end: Position { line: 9, column: 52, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 9, column: 54, }, end: Position { line: 9, column: 62, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toJSON", span: Span { start: Position { line: 9, column: 63, }, end: Position { line: 9, column: 69, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "key", span: Span { start: Position { line: 10, column: 5, }, end: Position { line: 10, column: 8, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "algo", span: Span { start: Position { line: 11, column: 9, }, end: Position { line: 11, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "rsa", span: Span { start: Position { line: 11, column: 17, }, end: Position { line: 11, column: 20, }, }, }, ), ], span: Span { start: Position { line: 11, column: 16, }, end: Position { line: 11, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "size", span: Span { start: Position { line: 12, column: 9, }, end: Position { line: 12, column: 13, }, }, }, ), ], to: Integer( Integer { value: "2048", span: Span { start: Position { line: 12, column: 16, }, end: Position { line: 12, column: 20, }, }, }, ), }, ), ], span: Span { start: Position { line: 10, column: 11, }, end: Position { line: 13, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "names", span: Span { start: Position { line: 14, column: 5, }, end: Position { line: 14, column: 10, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "singleton", span: Span { start: Position { line: 14, column: 13, }, end: Position { line: 14, column: 22, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 14, column: 23, }, end: Position { line: 14, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "caSpec", span: Span { start: Position { line: 14, column: 27, }, end: Position { line: 14, column: 33, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 9, column: 70, }, end: Position { line: 15, column: 4, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "csrCfssl", span: Span { start: Position { line: 17, column: 3, }, end: Position { line: 17, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 17, column: 14, }, end: Position { line: 17, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 17, column: 19, }, end: Position { line: 17, column: 28, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "kube-pki-cfssl-csr.json", span: Span { start: Position { line: 17, column: 30, }, end: Position { line: 17, column: 53, }, }, }, ), ], span: Span { start: Position { line: 17, column: 29, }, end: Position { line: 17, column: 54, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 17, column: 56, }, end: Position { line: 17, column: 64, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toJSON", span: Span { start: Position { line: 17, column: 65, }, end: Position { line: 17, column: 71, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "key", span: Span { start: Position { line: 18, column: 5, }, end: Position { line: 18, column: 8, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "algo", span: Span { start: Position { line: 19, column: 9, }, end: Position { line: 19, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "rsa", span: Span { start: Position { line: 19, column: 17, }, end: Position { line: 19, column: 20, }, }, }, ), ], span: Span { start: Position { line: 19, column: 16, }, end: Position { line: 19, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "size", span: Span { start: Position { line: 20, column: 9, }, end: Position { line: 20, column: 13, }, }, }, ), ], to: Integer( Integer { value: "2048", span: Span { start: Position { line: 20, column: 16, }, end: Position { line: 20, column: 20, }, }, }, ), }, ), ], span: Span { start: Position { line: 18, column: 11, }, end: Position { line: 21, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "CN", span: Span { start: Position { line: 22, column: 5, }, end: Position { line: 22, column: 7, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 22, column: 10, }, end: Position { line: 22, column: 13, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "masterAddress", span: Span { start: Position { line: 22, column: 14, }, end: Position { line: 22, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "hosts", span: Span { start: Position { line: 23, column: 5, }, end: Position { line: 23, column: 10, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 23, column: 14, }, end: Position { line: 23, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "masterAddress", span: Span { start: Position { line: 23, column: 18, }, end: Position { line: 23, column: 31, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 23, column: 13, }, end: Position { line: 23, column: 32, }, }, }, ), operator: Concatenation, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 23, column: 36, }, end: Position { line: 23, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "cfsslAPIExtraSANs", span: Span { start: Position { line: 23, column: 40, }, end: Position { line: 23, column: 57, }, }, }, ), ], default: None, }, ), }, ), }, ), ], span: Span { start: Position { line: 17, column: 72, }, end: Position { line: 24, column: 4, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cfsslAPITokenBaseName", span: Span { start: Position { line: 26, column: 3, }, end: Position { line: 26, column: 24, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "apitoken.secret", span: Span { start: Position { line: 26, column: 28, }, end: Position { line: 26, column: 43, }, }, }, ), ], span: Span { start: Position { line: 26, column: 27, }, end: Position { line: 26, column: 44, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cfsslAPITokenPath", span: Span { start: Position { line: 27, column: 3, }, end: Position { line: 27, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 27, column: 26, }, end: Position { line: 27, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 27, column: 33, }, end: Position { line: 27, column: 41, }, }, }, ), Raw( PartRaw { content: "cfssl", span: Span { start: Position { line: 27, column: 42, }, end: Position { line: 27, column: 47, }, }, }, ), Raw( PartRaw { content: "dataDir", span: Span { start: Position { line: 27, column: 48, }, end: Position { line: 27, column: 55, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/", span: Span { start: Position { line: 27, column: 24, }, end: Position { line: 27, column: 57, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfsslAPITokenBaseName", span: Span { start: Position { line: 27, column: 59, }, end: Position { line: 27, column: 80, }, }, }, ), }, ), ], span: Span { start: Position { line: 27, column: 23, }, end: Position { line: 27, column: 82, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "certmgrAPITokenPath", span: Span { start: Position { line: 28, column: 3, }, end: Position { line: 28, column: 22, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 28, column: 28, }, end: Position { line: 28, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "secretsPath", span: Span { start: Position { line: 28, column: 32, }, end: Position { line: 28, column: 43, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/", span: Span { start: Position { line: 28, column: 26, }, end: Position { line: 28, column: 45, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfsslAPITokenBaseName", span: Span { start: Position { line: 28, column: 47, }, end: Position { line: 28, column: 68, }, }, }, ), }, ), ], span: Span { start: Position { line: 28, column: 25, }, end: Position { line: 28, column: 70, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cfsslAPITokenLength", span: Span { start: Position { line: 29, column: 3, }, end: Position { line: 29, column: 22, }, }, }, ), ], to: Integer( Integer { value: "32", span: Span { start: Position { line: 29, column: 25, }, end: Position { line: 29, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "clusterAdminKubeconfig", span: Span { start: Position { line: 31, column: 3, }, end: Position { line: 31, column: 25, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 31, column: 33, }, end: Position { line: 31, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 31, column: 37, }, end: Position { line: 31, column: 42, }, }, }, ), Raw( PartRaw { content: "clusterAdmin", span: Span { start: Position { line: 31, column: 43, }, end: Position { line: 31, column: 55, }, }, }, ), ], default: None, }, ), target: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 32, column: 5, }, end: Position { line: 32, column: 8, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lib", span: Span { start: Position { line: 32, column: 9, }, end: Position { line: 32, column: 12, }, }, }, ), Raw( PartRaw { content: "mkKubeConfig", span: Span { start: Position { line: 32, column: 13, }, end: Position { line: 32, column: 25, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "cluster-admin", span: Span { start: Position { line: 32, column: 27, }, end: Position { line: 32, column: 40, }, }, }, ), ], span: Span { start: Position { line: 32, column: 26, }, end: Position { line: 32, column: 41, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "server", span: Span { start: Position { line: 33, column: 9, }, end: Position { line: 33, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 33, column: 18, }, end: Position { line: 33, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "apiserverAddress", span: Span { start: Position { line: 33, column: 22, }, end: Position { line: 33, column: 38, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 34, column: 9, }, end: Position { line: 34, column: 17, }, }, }, ), ], to: Identifier( Identifier { id: "cert", span: Span { start: Position { line: 34, column: 20, }, end: Position { line: 34, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 35, column: 9, }, end: Position { line: 35, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "key", span: Span { start: Position { line: 35, column: 19, }, end: Position { line: 35, column: 22, }, }, }, ), }, ), ], span: Span { start: Position { line: 32, column: 42, }, end: Position { line: 36, column: 6, }, }, }, ), ], }, ), span: Span { start: Position { line: 31, column: 28, }, end: Position { line: 36, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "remote", span: Span { start: Position { line: 38, column: 3, }, end: Position { line: 38, column: 9, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 38, column: 17, }, end: Position { line: 38, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 38, column: 24, }, end: Position { line: 38, column: 32, }, }, }, ), ], default: None, }, ), target: String( String_ { parts: [ Raw( PartRaw { content: "https://", span: Span { start: Position { line: 38, column: 35, }, end: Position { line: 38, column: 70, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "kubernetes", span: Span { start: Position { line: 38, column: 45, }, end: Position { line: 38, column: 55, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "masterAddress", span: Span { start: Position { line: 38, column: 56, }, end: Position { line: 38, column: 69, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ":", span: Span { start: Position { line: 38, column: 35, }, end: Position { line: 38, column: 71, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 38, column: 73, }, end: Position { line: 38, column: 81, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfssl", span: Span { start: Position { line: 38, column: 82, }, end: Position { line: 38, column: 87, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "port", span: Span { start: Position { line: 38, column: 88, }, end: Position { line: 38, column: 92, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 38, column: 34, }, end: Position { line: 38, column: 94, }, }, }, ), span: Span { start: Position { line: 38, column: 12, }, end: Position { line: 38, column: 94, }, }, }, ), }, ), ], target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 42, column: 3, }, end: Position { line: 42, column: 10, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 42, column: 11, }, end: Position { line: 42, column: 19, }, }, }, ), Raw( PartRaw { content: "kubernetes", span: Span { start: Position { line: 42, column: 20, }, end: Position { line: 42, column: 30, }, }, }, ), Raw( PartRaw { content: "pki", span: Span { start: Position { line: 42, column: 31, }, end: Position { line: 42, column: 34, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 42, column: 42, }, end: Position { line: 42, column: 45, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "types", span: Span { start: Position { line: 42, column: 46, }, end: Position { line: 42, column: 51, }, }, }, ), ], default: None, }, ), target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 44, column: 5, }, end: Position { line: 44, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkEnableOption", span: Span { start: Position { line: 44, column: 14, }, end: Position { line: 44, column: 28, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 44, column: 30, }, end: Position { line: 44, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 44, column: 34, }, end: Position { line: 44, column: 39, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "easyCert issuer service", span: Span { start: Position { line: 44, column: 41, }, end: Position { line: 44, column: 64, }, }, }, ), ], span: Span { start: Position { line: 44, column: 40, }, end: Position { line: 44, column: 65, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 46, column: 5, }, end: Position { line: 46, column: 10, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 46, column: 13, }, end: Position { line: 46, column: 21, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 47, column: 7, }, end: Position { line: 47, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 47, column: 21, }, end: Position { line: 47, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 47, column: 25, }, end: Position { line: 47, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "List of certificate specs to feed to cert generator.", span: Span { start: Position { line: 47, column: 32, }, end: Position { line: 47, column: 84, }, }, }, ), ], span: Span { start: Position { line: 47, column: 31, }, end: Position { line: 47, column: 85, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 48, column: 7, }, end: Position { line: 48, column: 14, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 48, column: 17, }, end: Position { line: 48, column: 19, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 49, column: 7, }, end: Position { line: 49, column: 11, }, }, }, ), ], to: Identifier( Identifier { id: "attrs", span: Span { start: Position { line: 49, column: 14, }, end: Position { line: 49, column: 19, }, }, }, ), }, ), ], span: Span { start: Position { line: 46, column: 22, }, end: Position { line: 50, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "genCfsslCACert", span: Span { start: Position { line: 52, column: 5, }, end: Position { line: 52, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 52, column: 22, }, end: Position { line: 52, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 53, column: 7, }, end: Position { line: 53, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 53, column: 21, }, end: Position { line: 53, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 53, column: 25, }, end: Position { line: 53, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Whether to automatically generate cfssl CA certificate and key,\nif they don't exist.\n", span: Span { start: Position { line: 54, column: 1, }, end: Position { line: 56, column: 7, }, }, }, ), ], span: Span { start: Position { line: 53, column: 31, }, end: Position { line: 56, column: 9, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 57, column: 7, }, end: Position { line: 57, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 57, column: 17, }, end: Position { line: 57, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 58, column: 7, }, end: Position { line: 58, column: 11, }, }, }, ), ], to: Identifier( Identifier { id: "bool", span: Span { start: Position { line: 58, column: 14, }, end: Position { line: 58, column: 18, }, }, }, ), }, ), ], span: Span { start: Position { line: 52, column: 31, }, end: Position { line: 59, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "genCfsslAPICerts", span: Span { start: Position { line: 61, column: 5, }, end: Position { line: 61, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 61, column: 24, }, end: Position { line: 61, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 62, column: 7, }, end: Position { line: 62, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 62, column: 21, }, end: Position { line: 62, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 62, column: 25, }, end: Position { line: 62, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Whether to automatically generate cfssl API webserver TLS cert and key,\nif they don't exist.\n", span: Span { start: Position { line: 63, column: 1, }, end: Position { line: 65, column: 7, }, }, }, ), ], span: Span { start: Position { line: 62, column: 31, }, end: Position { line: 65, column: 9, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 66, column: 7, }, end: Position { line: 66, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 66, column: 17, }, end: Position { line: 66, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 67, column: 7, }, end: Position { line: 67, column: 11, }, }, }, ), ], to: Identifier( Identifier { id: "bool", span: Span { start: Position { line: 67, column: 14, }, end: Position { line: 67, column: 18, }, }, }, ), }, ), ], span: Span { start: Position { line: 61, column: 33, }, end: Position { line: 68, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cfsslAPIExtraSANs", span: Span { start: Position { line: 70, column: 5, }, end: Position { line: 70, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 70, column: 25, }, end: Position { line: 70, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 71, column: 7, }, end: Position { line: 71, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 71, column: 21, }, end: Position { line: 71, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 71, column: 25, }, end: Position { line: 71, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Extra x509 Subject Alternative Names to be added to the cfssl API webserver TLS cert.\n", span: Span { start: Position { line: 72, column: 1, }, end: Position { line: 73, column: 7, }, }, }, ), ], span: Span { start: Position { line: 71, column: 31, }, end: Position { line: 73, column: 9, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 74, column: 7, }, end: Position { line: 74, column: 14, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 74, column: 17, }, end: Position { line: 74, column: 19, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 75, column: 7, }, end: Position { line: 75, column: 14, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "subdomain.example.com", span: Span { start: Position { line: 75, column: 20, }, end: Position { line: 75, column: 41, }, }, }, ), ], span: Span { start: Position { line: 75, column: 19, }, end: Position { line: 75, column: 42, }, }, }, ), ], span: Span { start: Position { line: 75, column: 17, }, end: Position { line: 75, column: 44, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 76, column: 7, }, end: Position { line: 76, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "listOf", span: Span { start: Position { line: 76, column: 14, }, end: Position { line: 76, column: 20, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 76, column: 21, }, end: Position { line: 76, column: 24, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 70, column: 34, }, end: Position { line: 77, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "genCfsslAPIToken", span: Span { start: Position { line: 79, column: 5, }, end: Position { line: 79, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 79, column: 24, }, end: Position { line: 79, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 80, column: 7, }, end: Position { line: 80, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 80, column: 21, }, end: Position { line: 80, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 80, column: 25, }, end: Position { line: 80, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Whether to automatically generate cfssl API-token secret,\nif they doesn't exist.\n", span: Span { start: Position { line: 81, column: 1, }, end: Position { line: 83, column: 7, }, }, }, ), ], span: Span { start: Position { line: 80, column: 31, }, end: Position { line: 83, column: 9, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 84, column: 7, }, end: Position { line: 84, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 84, column: 17, }, end: Position { line: 84, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 85, column: 7, }, end: Position { line: 85, column: 11, }, }, }, ), ], to: Identifier( Identifier { id: "bool", span: Span { start: Position { line: 85, column: 14, }, end: Position { line: 85, column: 18, }, }, }, ), }, ), ], span: Span { start: Position { line: 79, column: 33, }, end: Position { line: 86, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "pkiTrustOnBootstrap", span: Span { start: Position { line: 88, column: 5, }, end: Position { line: 88, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 88, column: 27, }, end: Position { line: 88, column: 35, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 89, column: 7, }, end: Position { line: 89, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 89, column: 21, }, end: Position { line: 89, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 89, column: 25, }, end: Position { line: 89, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Whether to always trust remote cfssl server upon initial PKI bootstrap.", span: Span { start: Position { line: 89, column: 32, }, end: Position { line: 89, column: 103, }, }, }, ), ], span: Span { start: Position { line: 89, column: 31, }, end: Position { line: 89, column: 104, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 90, column: 7, }, end: Position { line: 90, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 90, column: 17, }, end: Position { line: 90, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 91, column: 7, }, end: Position { line: 91, column: 11, }, }, }, ), ], to: Identifier( Identifier { id: "bool", span: Span { start: Position { line: 91, column: 14, }, end: Position { line: 91, column: 18, }, }, }, ), }, ), ], span: Span { start: Position { line: 88, column: 36, }, end: Position { line: 92, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "caCertPathPrefix", span: Span { start: Position { line: 94, column: 5, }, end: Position { line: 94, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 94, column: 24, }, end: Position { line: 94, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 95, column: 7, }, end: Position { line: 95, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 95, column: 21, }, end: Position { line: 95, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 95, column: 25, }, end: Position { line: 95, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Path-prefrix for the CA-certificate to be used for cfssl signing.\nSuffixes \".pem\" and \"-key.pem\" will be automatically appended for\nthe public and private keys respectively.\n", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 99, column: 7, }, }, }, ), ], span: Span { start: Position { line: 95, column: 31, }, end: Position { line: 99, column: 9, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 100, column: 7, }, end: Position { line: 100, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 100, column: 20, }, end: Position { line: 100, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 100, column: 27, }, end: Position { line: 100, column: 35, }, }, }, ), Raw( PartRaw { content: "cfssl", span: Span { start: Position { line: 100, column: 36, }, end: Position { line: 100, column: 41, }, }, }, ), Raw( PartRaw { content: "dataDir", span: Span { start: Position { line: 100, column: 42, }, end: Position { line: 100, column: 49, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/ca", span: Span { start: Position { line: 100, column: 18, }, end: Position { line: 100, column: 53, }, }, }, ), ], span: Span { start: Position { line: 100, column: 17, }, end: Position { line: 100, column: 54, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 101, column: 7, }, end: Position { line: 101, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 101, column: 21, }, end: Position { line: 101, column: 38, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "\"", span: Span { start: Position { line: 101, column: 41, }, end: Position { line: 101, column: 42, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 101, column: 41, }, end: Position { line: 101, column: 45, }, }, }, ), Raw( PartRaw { content: "{config.services.cfssl.dataDir}/ca\"", span: Span { start: Position { line: 101, column: 41, }, end: Position { line: 101, column: 80, }, }, }, ), ], span: Span { start: Position { line: 101, column: 39, }, end: Position { line: 101, column: 82, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 102, column: 7, }, end: Position { line: 102, column: 11, }, }, }, ), ], to: Identifier( Identifier { id: "str", span: Span { start: Position { line: 102, column: 14, }, end: Position { line: 102, column: 17, }, }, }, ), }, ), ], span: Span { start: Position { line: 94, column: 33, }, end: Position { line: 103, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "caSpec", span: Span { start: Position { line: 105, column: 5, }, end: Position { line: 105, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 105, column: 14, }, end: Position { line: 105, column: 22, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 106, column: 7, }, end: Position { line: 106, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 106, column: 21, }, end: Position { line: 106, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 106, column: 25, }, end: Position { line: 106, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Certificate specification for the auto-generated CAcert.", span: Span { start: Position { line: 106, column: 32, }, end: Position { line: 106, column: 88, }, }, }, ), ], span: Span { start: Position { line: 106, column: 31, }, end: Position { line: 106, column: 89, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 107, column: 7, }, end: Position { line: 107, column: 14, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "CN", span: Span { start: Position { line: 108, column: 9, }, end: Position { line: 108, column: 11, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "kubernetes-cluster-ca", span: Span { start: Position { line: 108, column: 15, }, end: Position { line: 108, column: 36, }, }, }, ), ], span: Span { start: Position { line: 108, column: 14, }, end: Position { line: 108, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "O", span: Span { start: Position { line: 109, column: 9, }, end: Position { line: 109, column: 10, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "NixOS", span: Span { start: Position { line: 109, column: 14, }, end: Position { line: 109, column: 19, }, }, }, ), ], span: Span { start: Position { line: 109, column: 13, }, end: Position { line: 109, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "OU", span: Span { start: Position { line: 110, column: 9, }, end: Position { line: 110, column: 11, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "services.kubernetes.pki.caSpec", span: Span { start: Position { line: 110, column: 15, }, end: Position { line: 110, column: 45, }, }, }, ), ], span: Span { start: Position { line: 110, column: 14, }, end: Position { line: 110, column: 46, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "L", span: Span { start: Position { line: 111, column: 9, }, end: Position { line: 111, column: 10, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "auto-generated", span: Span { start: Position { line: 111, column: 14, }, end: Position { line: 111, column: 28, }, }, }, ), ], span: Span { start: Position { line: 111, column: 13, }, end: Position { line: 111, column: 29, }, }, }, ), }, ), ], span: Span { start: Position { line: 107, column: 17, }, end: Position { line: 112, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 113, column: 7, }, end: Position { line: 113, column: 11, }, }, }, ), ], to: Identifier( Identifier { id: "attrs", span: Span { start: Position { line: 113, column: 14, }, end: Position { line: 113, column: 19, }, }, }, ), }, ), ], span: Span { start: Position { line: 105, column: 23, }, end: Position { line: 114, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "etcClusterAdminKubeconfig", span: Span { start: Position { line: 116, column: 5, }, end: Position { line: 116, column: 30, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 116, column: 33, }, end: Position { line: 116, column: 41, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 117, column: 7, }, end: Position { line: 117, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 117, column: 21, }, end: Position { line: 117, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 117, column: 25, }, end: Position { line: 117, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Symlink a kubeconfig with cluster-admin privileges to environment path\n(/etc/\\).\n", span: Span { start: Position { line: 118, column: 1, }, end: Position { line: 120, column: 7, }, }, }, ), ], span: Span { start: Position { line: 117, column: 31, }, end: Position { line: 120, column: 9, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 121, column: 7, }, end: Position { line: 121, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 121, column: 17, }, end: Position { line: 121, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 122, column: 7, }, end: Position { line: 122, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 122, column: 14, }, end: Position { line: 122, column: 20, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 122, column: 21, }, end: Position { line: 122, column: 24, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 116, column: 42, }, end: Position { line: 123, column: 6, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 42, column: 53, }, end: Position { line: 125, column: 4, }, }, }, ), span: Span { start: Position { line: 42, column: 37, }, end: Position { line: 125, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "config", span: Span { start: Position { line: 128, column: 3, }, end: Position { line: 128, column: 9, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 128, column: 12, }, end: Position { line: 128, column: 16, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 128, column: 17, }, end: Position { line: 128, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 128, column: 21, }, end: Position { line: 128, column: 27, }, }, }, ), ], default: None, }, ), LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cfsslCertPathPrefix", span: Span { start: Position { line: 130, column: 5, }, end: Position { line: 130, column: 24, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 130, column: 30, }, end: Position { line: 130, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 130, column: 37, }, end: Position { line: 130, column: 45, }, }, }, ), Raw( PartRaw { content: "cfssl", span: Span { start: Position { line: 130, column: 46, }, end: Position { line: 130, column: 51, }, }, }, ), Raw( PartRaw { content: "dataDir", span: Span { start: Position { line: 130, column: 52, }, end: Position { line: 130, column: 59, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/cfssl", span: Span { start: Position { line: 130, column: 28, }, end: Position { line: 130, column: 66, }, }, }, ), ], span: Span { start: Position { line: 130, column: 27, }, end: Position { line: 130, column: 67, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cfsslCert", span: Span { start: Position { line: 131, column: 5, }, end: Position { line: 131, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfsslCertPathPrefix", span: Span { start: Position { line: 131, column: 20, }, end: Position { line: 131, column: 39, }, }, }, ), }, ), Raw( PartRaw { content: ".pem", span: Span { start: Position { line: 131, column: 18, }, end: Position { line: 131, column: 44, }, }, }, ), ], span: Span { start: Position { line: 131, column: 17, }, end: Position { line: 131, column: 45, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cfsslKey", span: Span { start: Position { line: 132, column: 5, }, end: Position { line: 132, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfsslCertPathPrefix", span: Span { start: Position { line: 132, column: 19, }, end: Position { line: 132, column: 38, }, }, }, ), }, ), Raw( PartRaw { content: "-key.pem", span: Span { start: Position { line: 132, column: 17, }, end: Position { line: 132, column: 47, }, }, }, ), ], span: Span { start: Position { line: 132, column: 16, }, end: Position { line: 132, column: 48, }, }, }, ), }, ), ], target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 136, column: 5, }, end: Position { line: 136, column: 13, }, }, }, ), Raw( PartRaw { content: "cfssl", span: Span { start: Position { line: 136, column: 14, }, end: Position { line: 136, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 136, column: 22, }, end: Position { line: 136, column: 26, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 136, column: 28, }, end: Position { line: 136, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "apiserver", span: Span { start: Position { line: 136, column: 32, }, end: Position { line: 136, column: 41, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 136, column: 42, }, end: Position { line: 136, column: 48, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 137, column: 7, }, end: Position { line: 137, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 137, column: 16, }, end: Position { line: 137, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "address", span: Span { start: Position { line: 138, column: 7, }, end: Position { line: 138, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "0.0.0.0", span: Span { start: Position { line: 138, column: 18, }, end: Position { line: 138, column: 25, }, }, }, ), ], span: Span { start: Position { line: 138, column: 17, }, end: Position { line: 138, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "tlsCert", span: Span { start: Position { line: 139, column: 7, }, end: Position { line: 139, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "cfsslCert", span: Span { start: Position { line: 139, column: 17, }, end: Position { line: 139, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "tlsKey", span: Span { start: Position { line: 140, column: 7, }, end: Position { line: 140, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "cfsslKey", span: Span { start: Position { line: 140, column: 16, }, end: Position { line: 140, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "configFile", span: Span { start: Position { line: 141, column: 7, }, end: Position { line: 141, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 141, column: 20, }, end: Position { line: 141, column: 28, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 141, column: 30, }, end: Position { line: 141, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 141, column: 35, }, end: Position { line: 141, column: 44, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "cfssl-config.json", span: Span { start: Position { line: 141, column: 46, }, end: Position { line: 141, column: 63, }, }, }, ), ], span: Span { start: Position { line: 141, column: 45, }, end: Position { line: 141, column: 64, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 141, column: 66, }, end: Position { line: 141, column: 74, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toJSON", span: Span { start: Position { line: 141, column: 75, }, end: Position { line: 141, column: 81, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "signing", span: Span { start: Position { line: 142, column: 9, }, end: Position { line: 142, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "profiles", span: Span { start: Position { line: 143, column: 11, }, end: Position { line: 143, column: 19, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 144, column: 13, }, end: Position { line: 144, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "usages", span: Span { start: Position { line: 145, column: 15, }, end: Position { line: 145, column: 21, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "digital signature", span: Span { start: Position { line: 145, column: 26, }, end: Position { line: 145, column: 43, }, }, }, ), ], span: Span { start: Position { line: 145, column: 25, }, end: Position { line: 145, column: 44, }, }, }, ), ], span: Span { start: Position { line: 145, column: 24, }, end: Position { line: 145, column: 45, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "auth_key", span: Span { start: Position { line: 146, column: 15, }, end: Position { line: 146, column: 23, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 146, column: 27, }, end: Position { line: 146, column: 34, }, }, }, ), ], span: Span { start: Position { line: 146, column: 26, }, end: Position { line: 146, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "expiry", span: Span { start: Position { line: 147, column: 15, }, end: Position { line: 147, column: 21, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "720h", span: Span { start: Position { line: 147, column: 25, }, end: Position { line: 147, column: 29, }, }, }, ), ], span: Span { start: Position { line: 147, column: 24, }, end: Position { line: 147, column: 30, }, }, }, ), }, ), ], span: Span { start: Position { line: 144, column: 23, }, end: Position { line: 148, column: 14, }, }, }, ), }, ), ], span: Span { start: Position { line: 143, column: 22, }, end: Position { line: 149, column: 12, }, }, }, ), }, ), ], span: Span { start: Position { line: 142, column: 19, }, end: Position { line: 150, column: 10, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "auth_keys", span: Span { start: Position { line: 151, column: 9, }, end: Position { line: 151, column: 18, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 152, column: 11, }, end: Position { line: 152, column: 18, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 153, column: 13, }, end: Position { line: 153, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "standard", span: Span { start: Position { line: 153, column: 21, }, end: Position { line: 153, column: 29, }, }, }, ), ], span: Span { start: Position { line: 153, column: 20, }, end: Position { line: 153, column: 30, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "key", span: Span { start: Position { line: 154, column: 13, }, end: Position { line: 154, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "file:", span: Span { start: Position { line: 154, column: 20, }, end: Position { line: 154, column: 45, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfsslAPITokenPath", span: Span { start: Position { line: 154, column: 27, }, end: Position { line: 154, column: 44, }, }, }, ), }, ), ], span: Span { start: Position { line: 154, column: 19, }, end: Position { line: 154, column: 46, }, }, }, ), }, ), ], span: Span { start: Position { line: 152, column: 21, }, end: Position { line: 155, column: 12, }, }, }, ), }, ), ], span: Span { start: Position { line: 151, column: 21, }, end: Position { line: 156, column: 10, }, }, }, ), }, ), ], span: Span { start: Position { line: 141, column: 82, }, end: Position { line: 157, column: 8, }, }, }, ), ], }, ), ], }, ), ], }, ), }, ), ], span: Span { start: Position { line: 136, column: 50, }, end: Position { line: 158, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 160, column: 5, }, end: Position { line: 160, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 160, column: 13, }, end: Position { line: 160, column: 21, }, }, }, ), Raw( PartRaw { content: "cfssl", span: Span { start: Position { line: 160, column: 22, }, end: Position { line: 160, column: 27, }, }, }, ), Raw( PartRaw { content: "preStart", span: Span { start: Position { line: 160, column: 28, }, end: Position { line: 160, column: 36, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 160, column: 44, }, end: Position { line: 160, column: 48, }, }, }, ), target: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 160, column: 55, }, end: Position { line: 160, column: 61, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 160, column: 62, }, end: Position { line: 160, column: 70, }, }, }, ), Raw( PartRaw { content: "cfssl", span: Span { start: Position { line: 160, column: 71, }, end: Position { line: 160, column: 76, }, }, }, ), ], default: None, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 160, column: 78, }, end: Position { line: 160, column: 82, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 160, column: 84, }, end: Position { line: 160, column: 87, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "apiserver", span: Span { start: Position { line: 160, column: 88, }, end: Position { line: 160, column: 97, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 160, column: 98, }, end: Position { line: 160, column: 104, }, }, }, ), ], default: None, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 161, column: 6, }, end: Position { line: 161, column: 22, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "\n", span: Span { start: Position { line: 161, column: 24, }, end: Position { line: 161, column: 26, }, }, }, ), ], span: Span { start: Position { line: 161, column: 23, }, end: Position { line: 161, column: 27, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "set -e", span: Span { start: Position { line: 162, column: 8, }, end: Position { line: 162, column: 14, }, }, }, ), ], span: Span { start: Position { line: 162, column: 7, }, end: Position { line: 162, column: 15, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 163, column: 8, }, end: Position { line: 163, column: 22, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 163, column: 23, }, end: Position { line: 163, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "genCfsslCACert", span: Span { start: Position { line: 163, column: 27, }, end: Position { line: 163, column: 41, }, }, }, ), ], default: None, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "if [ ! -f \"", span: Span { start: Position { line: 164, column: 1, }, end: Position { line: 164, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 164, column: 22, }, end: Position { line: 164, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "caCertPathPrefix", span: Span { start: Position { line: 164, column: 26, }, end: Position { line: 164, column: 42, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ".pem\" ]; then\n ", span: Span { start: Position { line: 164, column: 1, }, end: Position { line: 165, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfssl", span: Span { start: Position { line: 165, column: 13, }, end: Position { line: 165, column: 18, }, }, }, ), }, ), Raw( PartRaw { content: "/bin/cfssl genkey -initca ", span: Span { start: Position { line: 164, column: 1, }, end: Position { line: 165, column: 45, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "csrCA", span: Span { start: Position { line: 165, column: 47, }, end: Position { line: 165, column: 52, }, }, }, ), }, ), Raw( PartRaw { content: " | \\\n ", span: Span { start: Position { line: 164, column: 1, }, end: Position { line: 166, column: 13, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfssl", span: Span { start: Position { line: 166, column: 15, }, end: Position { line: 166, column: 20, }, }, }, ), }, ), Raw( PartRaw { content: "/bin/cfssljson -bare ", span: Span { start: Position { line: 164, column: 1, }, end: Position { line: 166, column: 42, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 166, column: 44, }, end: Position { line: 166, column: 47, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "caCertPathPrefix", span: Span { start: Position { line: 166, column: 48, }, end: Position { line: 166, column: 64, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nfi\n", span: Span { start: Position { line: 164, column: 1, }, end: Position { line: 168, column: 7, }, }, }, ), ], span: Span { start: Position { line: 163, column: 42, }, end: Position { line: 168, column: 9, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 169, column: 8, }, end: Position { line: 169, column: 22, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 169, column: 23, }, end: Position { line: 169, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "genCfsslAPICerts", span: Span { start: Position { line: 169, column: 27, }, end: Position { line: 169, column: 43, }, }, }, ), ], default: None, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "if [ ! -f \"", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 170, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "dataDir", span: Span { start: Position { line: 170, column: 22, }, end: Position { line: 170, column: 29, }, }, }, ), }, ), Raw( PartRaw { content: "/cfssl.pem\" ]; then\n ", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 171, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfssl", span: Span { start: Position { line: 171, column: 13, }, end: Position { line: 171, column: 18, }, }, }, ), }, ), Raw( PartRaw { content: "/bin/cfssl gencert -ca \"", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 171, column: 43, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 171, column: 45, }, end: Position { line: 171, column: 48, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "caCertPathPrefix", span: Span { start: Position { line: 171, column: 49, }, end: Position { line: 171, column: 65, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ".pem\" -ca-key \"", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 171, column: 81, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 171, column: 83, }, end: Position { line: 171, column: 86, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "caCertPathPrefix", span: Span { start: Position { line: 171, column: 87, }, end: Position { line: 171, column: 103, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "-key.pem\" ", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 171, column: 114, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "csrCfssl", span: Span { start: Position { line: 171, column: 116, }, end: Position { line: 171, column: 124, }, }, }, ), }, ), Raw( PartRaw { content: " | \\\n ", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 172, column: 13, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfssl", span: Span { start: Position { line: 172, column: 15, }, end: Position { line: 172, column: 20, }, }, }, ), }, ), Raw( PartRaw { content: "/bin/cfssljson -bare ", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 172, column: 42, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfsslCertPathPrefix", span: Span { start: Position { line: 172, column: 44, }, end: Position { line: 172, column: 63, }, }, }, ), }, ), Raw( PartRaw { content: "\nfi\n", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 174, column: 7, }, }, }, ), ], span: Span { start: Position { line: 169, column: 44, }, end: Position { line: 174, column: 9, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 175, column: 8, }, end: Position { line: 175, column: 22, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 175, column: 23, }, end: Position { line: 175, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "genCfsslAPIToken", span: Span { start: Position { line: 175, column: 27, }, end: Position { line: 175, column: 43, }, }, }, ), ], default: None, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "if [ ! -f \"", span: Span { start: Position { line: 176, column: 1, }, end: Position { line: 176, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfsslAPITokenPath", span: Span { start: Position { line: 176, column: 22, }, end: Position { line: 176, column: 39, }, }, }, ), }, ), Raw( PartRaw { content: "\" ]; then\n head -c ", span: Span { start: Position { line: 176, column: 1, }, end: Position { line: 177, column: 19, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 177, column: 21, }, end: Position { line: 177, column: 29, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "cfsslAPITokenLength", span: Span { start: Position { line: 177, column: 31, }, end: Position { line: 177, column: 50, }, }, }, ), operator: Division, right: Integer( Integer { value: "2", span: Span { start: Position { line: 177, column: 53, }, end: Position { line: 177, column: 54, }, }, }, ), }, ), ], }, ), }, ), Raw( PartRaw { content: " /dev/urandom | od -An -t x | tr -d ' ' >\"", span: Span { start: Position { line: 176, column: 1, }, end: Position { line: 177, column: 98, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfsslAPITokenPath", span: Span { start: Position { line: 177, column: 100, }, end: Position { line: 177, column: 117, }, }, }, ), }, ), Raw( PartRaw { content: "\"\nfi\nchown cfssl \"", span: Span { start: Position { line: 176, column: 1, }, end: Position { line: 179, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfsslAPITokenPath", span: Span { start: Position { line: 179, column: 24, }, end: Position { line: 179, column: 41, }, }, }, ), }, ), Raw( PartRaw { content: "\" && chmod 400 \"", span: Span { start: Position { line: 176, column: 1, }, end: Position { line: 179, column: 58, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfsslAPITokenPath", span: Span { start: Position { line: 179, column: 60, }, end: Position { line: 179, column: 77, }, }, }, ), }, ), Raw( PartRaw { content: "\"\n", span: Span { start: Position { line: 176, column: 1, }, end: Position { line: 180, column: 7, }, }, }, ), ], span: Span { start: Position { line: 175, column: 44, }, end: Position { line: 180, column: 9, }, }, }, ), ], }, ), ], span: Span { start: Position { line: 161, column: 28, }, end: Position { line: 180, column: 11, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 160, column: 50, }, end: Position { line: 180, column: 12, }, }, }, ), span: Span { start: Position { line: 160, column: 39, }, end: Position { line: 180, column: 12, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 182, column: 5, }, end: Position { line: 182, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 182, column: 13, }, end: Position { line: 182, column: 21, }, }, }, ), Raw( PartRaw { content: "kube-certmgr-bootstrap", span: Span { start: Position { line: 182, column: 22, }, end: Position { line: 182, column: 44, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 183, column: 7, }, end: Position { line: 183, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Kubernetes certmgr bootstrapper", span: Span { start: Position { line: 183, column: 22, }, end: Position { line: 183, column: 53, }, }, }, ), ], span: Span { start: Position { line: 183, column: 21, }, end: Position { line: 183, column: 54, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 184, column: 7, }, end: Position { line: 184, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "certmgr.service", span: Span { start: Position { line: 184, column: 21, }, end: Position { line: 184, column: 36, }, }, }, ), ], span: Span { start: Position { line: 184, column: 20, }, end: Position { line: 184, column: 37, }, }, }, ), ], span: Span { start: Position { line: 184, column: 18, }, end: Position { line: 184, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 185, column: 7, }, end: Position { line: 185, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "cfssl.target", span: Span { start: Position { line: 185, column: 18, }, end: Position { line: 185, column: 30, }, }, }, ), ], span: Span { start: Position { line: 185, column: 17, }, end: Position { line: 185, column: 31, }, }, }, ), ], span: Span { start: Position { line: 185, column: 15, }, end: Position { line: 185, column: 33, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "script", span: Span { start: Position { line: 186, column: 7, }, end: Position { line: 186, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 186, column: 16, }, end: Position { line: 186, column: 32, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "\n", span: Span { start: Position { line: 186, column: 34, }, end: Position { line: 186, column: 36, }, }, }, ), ], span: Span { start: Position { line: 186, column: 33, }, end: Position { line: 186, column: 37, }, }, }, ), List( List { elements: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "set -e\n\n# If there's a cfssl (cert issuer) running locally, then don't rely on user to\n# manually paste it in place. Just symlink.\n# otherwise, create the target file, ready for users to insert the token\n\nmkdir -p \"$(dirname \"", span: Span { start: Position { line: 187, column: 1, }, end: Position { line: 193, column: 30, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "certmgrAPITokenPath", span: Span { start: Position { line: 193, column: 32, }, end: Position { line: 193, column: 51, }, }, }, ), }, ), Raw( PartRaw { content: "\")\"\nif [ -f \"", span: Span { start: Position { line: 187, column: 1, }, end: Position { line: 194, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfsslAPITokenPath", span: Span { start: Position { line: 194, column: 20, }, end: Position { line: 194, column: 37, }, }, }, ), }, ), Raw( PartRaw { content: "\" ]; then\n ln -fs \"", span: Span { start: Position { line: 187, column: 1, }, end: Position { line: 195, column: 19, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cfsslAPITokenPath", span: Span { start: Position { line: 195, column: 21, }, end: Position { line: 195, column: 38, }, }, }, ), }, ), Raw( PartRaw { content: "\" \"", span: Span { start: Position { line: 187, column: 1, }, end: Position { line: 195, column: 42, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "certmgrAPITokenPath", span: Span { start: Position { line: 195, column: 44, }, end: Position { line: 195, column: 63, }, }, }, ), }, ), Raw( PartRaw { content: "\"\nelse\n touch \"", span: Span { start: Position { line: 187, column: 1, }, end: Position { line: 197, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "certmgrAPITokenPath", span: Span { start: Position { line: 197, column: 20, }, end: Position { line: 197, column: 39, }, }, }, ), }, ), Raw( PartRaw { content: "\" && chmod 600 \"", span: Span { start: Position { line: 187, column: 1, }, end: Position { line: 197, column: 56, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "certmgrAPITokenPath", span: Span { start: Position { line: 197, column: 58, }, end: Position { line: 197, column: 77, }, }, }, ), }, ), Raw( PartRaw { content: "\"\nfi\n", span: Span { start: Position { line: 187, column: 1, }, end: Position { line: 199, column: 7, }, }, }, ), ], span: Span { start: Position { line: 186, column: 39, }, end: Position { line: 199, column: 9, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 200, column: 8, }, end: Position { line: 200, column: 22, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 200, column: 24, }, end: Position { line: 200, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "pkiTrustOnBootstrap", span: Span { start: Position { line: 200, column: 28, }, end: Position { line: 200, column: 47, }, }, }, ), ], default: None, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "if [ ! -f \"", span: Span { start: Position { line: 201, column: 1, }, end: Position { line: 201, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 201, column: 22, }, end: Position { line: 201, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "caFile", span: Span { start: Position { line: 201, column: 26, }, end: Position { line: 201, column: 32, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\" ] || [ $(cat \"", span: Span { start: Position { line: 201, column: 1, }, end: Position { line: 201, column: 49, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 201, column: 51, }, end: Position { line: 201, column: 54, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "caFile", span: Span { start: Position { line: 201, column: 55, }, end: Position { line: 201, column: 61, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\" | wc -c) -lt 1 ]; then\n ", span: Span { start: Position { line: 201, column: 1, }, end: Position { line: 202, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 202, column: 13, }, end: Position { line: 202, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "curl", span: Span { start: Position { line: 202, column: 18, }, end: Position { line: 202, column: 22, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/curl --fail-early -f -kd '{}' ", span: Span { start: Position { line: 201, column: 1, }, end: Position { line: 202, column: 58, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "remote", span: Span { start: Position { line: 202, column: 60, }, end: Position { line: 202, column: 66, }, }, }, ), }, ), Raw( PartRaw { content: "/api/v1/cfssl/info | \\\n ", span: Span { start: Position { line: 201, column: 1, }, end: Position { line: 203, column: 13, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 203, column: 15, }, end: Position { line: 203, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "cfssl", span: Span { start: Position { line: 203, column: 20, }, end: Position { line: 203, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/cfssljson -stdout >", span: Span { start: Position { line: 201, column: 1, }, end: Position { line: 203, column: 50, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 203, column: 52, }, end: Position { line: 203, column: 55, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "caFile", span: Span { start: Position { line: 203, column: 56, }, end: Position { line: 203, column: 62, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nfi\n", span: Span { start: Position { line: 201, column: 1, }, end: Position { line: 205, column: 7, }, }, }, ), ], span: Span { start: Position { line: 200, column: 49, }, end: Position { line: 205, column: 9, }, }, }, ), ], }, ), ], span: Span { start: Position { line: 186, column: 38, }, end: Position { line: 206, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 207, column: 7, }, end: Position { line: 207, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "RestartSec", span: Span { start: Position { line: 208, column: 9, }, end: Position { line: 208, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "10s", span: Span { start: Position { line: 208, column: 23, }, end: Position { line: 208, column: 26, }, }, }, ), ], span: Span { start: Position { line: 208, column: 22, }, end: Position { line: 208, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Restart", span: Span { start: Position { line: 209, column: 9, }, end: Position { line: 209, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "on-failure", span: Span { start: Position { line: 209, column: 20, }, end: Position { line: 209, column: 30, }, }, }, ), ], span: Span { start: Position { line: 209, column: 19, }, end: Position { line: 209, column: 31, }, }, }, ), }, ), ], span: Span { start: Position { line: 207, column: 23, }, end: Position { line: 210, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 182, column: 47, }, end: Position { line: 211, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 213, column: 5, }, end: Position { line: 213, column: 13, }, }, }, ), Raw( PartRaw { content: "certmgr", span: Span { start: Position { line: 213, column: 14, }, end: Position { line: 213, column: 21, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 214, column: 7, }, end: Position { line: 214, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 214, column: 16, }, end: Position { line: 214, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 215, column: 7, }, end: Position { line: 215, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 215, column: 17, }, end: Position { line: 215, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certmgr-selfsigned", span: Span { start: Position { line: 215, column: 22, }, end: Position { line: 215, column: 40, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "svcManager", span: Span { start: Position { line: 216, column: 7, }, end: Position { line: 216, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "command", span: Span { start: Position { line: 216, column: 21, }, end: Position { line: 216, column: 28, }, }, }, ), ], span: Span { start: Position { line: 216, column: 20, }, end: Position { line: 216, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "specs", span: Span { start: Position { line: 217, column: 7, }, end: Position { line: 217, column: 12, }, }, }, ), ], to: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkSpec", span: Span { start: Position { line: 219, column: 11, }, end: Position { line: 219, column: 17, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "_", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cert", }, ), body: Map( Map { recursive: false, bindings: [ Inherit( BindingInherit { from: Some( Identifier( Identifier { id: "cert", span: Span { start: Position { line: 220, column: 22, }, end: Position { line: 220, column: 26, }, }, }, ), ), attributes: [ Raw( PartRaw { content: "action", span: Span { start: Position { line: 220, column: 28, }, end: Position { line: 220, column: 34, }, }, }, ), ], span: Span { start: Position { line: 219, column: 30, }, end: Position { line: 220, column: 35, }, }, }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "authority", span: Span { start: Position { line: 221, column: 13, }, end: Position { line: 221, column: 22, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ Inherit( BindingInherit { from: None, attributes: [ Raw( PartRaw { content: "remote", span: Span { start: Position { line: 222, column: 23, }, end: Position { line: 222, column: 29, }, }, }, ), ], span: Span { start: Position { line: 221, column: 26, }, end: Position { line: 222, column: 30, }, }, }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "file", span: Span { start: Position { line: 223, column: 15, }, end: Position { line: 223, column: 19, }, }, }, ), Raw( PartRaw { content: "path", span: Span { start: Position { line: 223, column: 20, }, end: Position { line: 223, column: 24, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cert", span: Span { start: Position { line: 223, column: 27, }, end: Position { line: 223, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "caCert", span: Span { start: Position { line: 223, column: 32, }, end: Position { line: 223, column: 38, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "root_ca", span: Span { start: Position { line: 224, column: 15, }, end: Position { line: 224, column: 22, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cert", span: Span { start: Position { line: 224, column: 25, }, end: Position { line: 224, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "caCert", span: Span { start: Position { line: 224, column: 30, }, end: Position { line: 224, column: 36, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "profile", span: Span { start: Position { line: 225, column: 15, }, end: Position { line: 225, column: 22, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 225, column: 26, }, end: Position { line: 225, column: 33, }, }, }, ), ], span: Span { start: Position { line: 225, column: 25, }, end: Position { line: 225, column: 34, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "auth_key_file", span: Span { start: Position { line: 226, column: 15, }, end: Position { line: 226, column: 28, }, }, }, ), ], to: Identifier( Identifier { id: "certmgrAPITokenPath", span: Span { start: Position { line: 226, column: 31, }, end: Position { line: 226, column: 50, }, }, }, ), }, ), ], span: Span { start: Position { line: 221, column: 25, }, end: Position { line: 227, column: 14, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "certificate", span: Span { start: Position { line: 228, column: 13, }, end: Position { line: 228, column: 24, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 229, column: 15, }, end: Position { line: 229, column: 19, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cert", span: Span { start: Position { line: 229, column: 22, }, end: Position { line: 229, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "cert", span: Span { start: Position { line: 229, column: 27, }, end: Position { line: 229, column: 31, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 228, column: 27, }, end: Position { line: 230, column: 14, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "private_key", span: Span { start: Position { line: 231, column: 13, }, end: Position { line: 231, column: 24, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cert", span: Span { start: Position { line: 231, column: 27, }, end: Position { line: 231, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "privateKeyOptions", span: Span { start: Position { line: 231, column: 32, }, end: Position { line: 231, column: 49, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "request", span: Span { start: Position { line: 232, column: 13, }, end: Position { line: 232, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "hosts", span: Span { start: Position { line: 233, column: 15, }, end: Position { line: 233, column: 20, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cert", span: Span { start: Position { line: 233, column: 24, }, end: Position { line: 233, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "CN", span: Span { start: Position { line: 233, column: 29, }, end: Position { line: 233, column: 31, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 233, column: 23, }, end: Position { line: 233, column: 32, }, }, }, ), operator: Concatenation, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cert", span: Span { start: Position { line: 233, column: 36, }, end: Position { line: 233, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "hosts", span: Span { start: Position { line: 233, column: 41, }, end: Position { line: 233, column: 46, }, }, }, ), ], default: None, }, ), }, ), }, ), Inherit( BindingInherit { from: Some( Identifier( Identifier { id: "cert", span: Span { start: Position { line: 234, column: 24, }, end: Position { line: 234, column: 28, }, }, }, ), ), attributes: [ Raw( PartRaw { content: "CN", span: Span { start: Position { line: 234, column: 30, }, end: Position { line: 234, column: 32, }, }, }, ), ], span: Span { start: Position { line: 232, column: 24, }, end: Position { line: 234, column: 33, }, }, }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "key", span: Span { start: Position { line: 235, column: 15, }, end: Position { line: 235, column: 18, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "algo", span: Span { start: Position { line: 236, column: 17, }, end: Position { line: 236, column: 21, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "rsa", span: Span { start: Position { line: 236, column: 25, }, end: Position { line: 236, column: 28, }, }, }, ), ], span: Span { start: Position { line: 236, column: 24, }, end: Position { line: 236, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "size", span: Span { start: Position { line: 237, column: 17, }, end: Position { line: 237, column: 21, }, }, }, ), ], to: Integer( Integer { value: "2048", span: Span { start: Position { line: 237, column: 24, }, end: Position { line: 237, column: 28, }, }, }, ), }, ), ], span: Span { start: Position { line: 235, column: 21, }, end: Position { line: 238, column: 16, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "names", span: Span { start: Position { line: 239, column: 15, }, end: Position { line: 239, column: 20, }, }, }, ), ], to: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cert", span: Span { start: Position { line: 239, column: 25, }, end: Position { line: 239, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "fields", span: Span { start: Position { line: 239, column: 30, }, end: Position { line: 239, column: 36, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 239, column: 23, }, end: Position { line: 239, column: 38, }, }, }, ), }, ), ], span: Span { start: Position { line: 232, column: 23, }, end: Position { line: 240, column: 14, }, }, }, ), }, ), ], span: Span { start: Position { line: 219, column: 29, }, end: Position { line: 241, column: 12, }, }, }, ), span: Span { start: Position { line: 219, column: 23, }, end: Position { line: 241, column: 12, }, }, }, ), span: Span { start: Position { line: 219, column: 20, }, end: Position { line: 241, column: 12, }, }, }, ), }, ), ], target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrs", span: Span { start: Position { line: 243, column: 11, }, end: Position { line: 243, column: 19, }, }, }, ), arguments: [ Identifier( Identifier { id: "mkSpec", span: Span { start: Position { line: 243, column: 20, }, end: Position { line: 243, column: 26, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 243, column: 27, }, end: Position { line: 243, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 243, column: 31, }, end: Position { line: 243, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), span: Span { start: Position { line: 218, column: 9, }, end: Position { line: 243, column: 36, }, }, }, ), }, ), ], span: Span { start: Position { line: 213, column: 24, }, end: Position { line: 244, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 251, column: 7, }, end: Position { line: 251, column: 14, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 251, column: 15, }, end: Position { line: 251, column: 23, }, }, }, ), Raw( PartRaw { content: "kube-addon-manager", span: Span { start: Position { line: 251, column: 24, }, end: Position { line: 251, column: 42, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 251, column: 45, }, end: Position { line: 251, column: 49, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 251, column: 50, }, end: Position { line: 251, column: 53, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "addonManager", span: Span { start: Position { line: 251, column: 54, }, end: Position { line: 251, column: 66, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 251, column: 67, }, end: Position { line: 251, column: 73, }, }, }, ), ], default: None, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkMerge", span: Span { start: Position { line: 251, column: 75, }, end: Position { line: 251, column: 82, }, }, }, ), arguments: [ List( List { elements: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 252, column: 9, }, end: Position { line: 252, column: 20, }, }, }, ), Raw( PartRaw { content: "KUBECONFIG", span: Span { start: Position { line: 252, column: 21, }, end: Position { line: 252, column: 31, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 252, column: 39, }, end: Position { line: 252, column: 42, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 252, column: 43, }, end: Position { line: 252, column: 48, }, }, }, ), Raw( PartRaw { content: "addonManager", span: Span { start: Position { line: 252, column: 49, }, end: Position { line: 252, column: 61, }, }, }, ), ], default: None, }, ), target: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 253, column: 11, }, end: Position { line: 253, column: 14, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lib", span: Span { start: Position { line: 253, column: 15, }, end: Position { line: 253, column: 18, }, }, }, ), Raw( PartRaw { content: "mkKubeConfig", span: Span { start: Position { line: 253, column: 19, }, end: Position { line: 253, column: 31, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "addon-manager", span: Span { start: Position { line: 253, column: 33, }, end: Position { line: 253, column: 46, }, }, }, ), ], span: Span { start: Position { line: 253, column: 32, }, end: Position { line: 253, column: 47, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "server", span: Span { start: Position { line: 254, column: 13, }, end: Position { line: 254, column: 19, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 254, column: 22, }, end: Position { line: 254, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "apiserverAddress", span: Span { start: Position { line: 254, column: 26, }, end: Position { line: 254, column: 42, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 255, column: 13, }, end: Position { line: 255, column: 21, }, }, }, ), ], to: Identifier( Identifier { id: "cert", span: Span { start: Position { line: 255, column: 24, }, end: Position { line: 255, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 256, column: 13, }, end: Position { line: 256, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "key", span: Span { start: Position { line: 256, column: 23, }, end: Position { line: 256, column: 26, }, }, }, ), }, ), ], span: Span { start: Position { line: 253, column: 48, }, end: Position { line: 257, column: 12, }, }, }, ), ], }, ), span: Span { start: Position { line: 252, column: 34, }, end: Position { line: 257, column: 12, }, }, }, ), }, ), ], span: Span { start: Position { line: 251, column: 84, }, end: Position { line: 258, column: 10, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 260, column: 10, }, end: Position { line: 260, column: 23, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 260, column: 25, }, end: Position { line: 260, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "addonManager", span: Span { start: Position { line: 260, column: 29, }, end: Position { line: 260, column: 41, }, }, }, ), Raw( PartRaw { content: "bootstrapAddons", span: Span { start: Position { line: 260, column: 42, }, end: Position { line: 260, column: 57, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 260, column: 61, }, end: Position { line: 260, column: 63, }, }, }, ), }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 261, column: 11, }, end: Position { line: 261, column: 24, }, }, }, ), Raw( PartRaw { content: "PermissionsStartOnly", span: Span { start: Position { line: 261, column: 25, }, end: Position { line: 261, column: 45, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 261, column: 48, }, end: Position { line: 261, column: 52, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "preStart", span: Span { start: Position { line: 262, column: 11, }, end: Position { line: 262, column: 19, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 262, column: 27, }, end: Position { line: 262, column: 31, }, }, }, ), target: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "files", span: Span { start: Position { line: 264, column: 13, }, end: Position { line: 264, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 264, column: 21, }, end: Position { line: 264, column: 35, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "n", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "v", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "writeText", span: Span { start: Position { line: 264, column: 43, }, end: Position { line: 264, column: 52, }, }, }, ), arguments: [ String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "n", span: Span { start: Position { line: 264, column: 56, }, end: Position { line: 264, column: 57, }, }, }, ), }, ), Raw( PartRaw { content: ".json", span: Span { start: Position { line: 264, column: 54, }, end: Position { line: 264, column: 63, }, }, }, ), ], span: Span { start: Position { line: 264, column: 53, }, end: Position { line: 264, column: 64, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 264, column: 66, }, end: Position { line: 264, column: 74, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toJSON", span: Span { start: Position { line: 264, column: 75, }, end: Position { line: 264, column: 81, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "v", span: Span { start: Position { line: 264, column: 82, }, end: Position { line: 264, column: 83, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 264, column: 40, }, end: Position { line: 264, column: 84, }, }, }, ), span: Span { start: Position { line: 264, column: 37, }, end: Position { line: 264, column: 84, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 265, column: 15, }, end: Position { line: 265, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "addonManager", span: Span { start: Position { line: 265, column: 19, }, end: Position { line: 265, column: 31, }, }, }, ), Raw( PartRaw { content: "bootstrapAddons", span: Span { start: Position { line: 265, column: 32, }, end: Position { line: 265, column: 47, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], target: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "export KUBECONFIG=", span: Span { start: Position { line: 268, column: 1, }, end: Position { line: 268, column: 31, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "clusterAdminKubeconfig", span: Span { start: Position { line: 268, column: 33, }, end: Position { line: 268, column: 55, }, }, }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 268, column: 1, }, end: Position { line: 269, column: 13, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 269, column: 15, }, end: Position { line: 269, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 269, column: 19, }, end: Position { line: 269, column: 26, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/kubectl apply -f ", span: Span { start: Position { line: 268, column: 1, }, end: Position { line: 269, column: 49, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 269, column: 51, }, end: Position { line: 269, column: 67, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: " \\\n -f ", span: Span { start: Position { line: 269, column: 69, }, end: Position { line: 269, column: 78, }, }, }, ), ], span: Span { start: Position { line: 269, column: 68, }, end: Position { line: 269, column: 79, }, }, }, ), Identifier( Identifier { id: "files", span: Span { start: Position { line: 269, column: 80, }, end: Position { line: 269, column: 85, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 268, column: 1, }, end: Position { line: 270, column: 11, }, }, }, ), ], span: Span { start: Position { line: 267, column: 11, }, end: Position { line: 270, column: 13, }, }, }, ), span: Span { start: Position { line: 263, column: 11, }, end: Position { line: 270, column: 13, }, }, }, ), span: Span { start: Position { line: 262, column: 22, }, end: Position { line: 270, column: 13, }, }, }, ), }, ), ], span: Span { start: Position { line: 260, column: 65, }, end: Position { line: 271, column: 10, }, }, }, ), ], }, ), ], span: Span { start: Position { line: 251, column: 83, }, end: Position { line: 271, column: 12, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 273, column: 7, }, end: Position { line: 273, column: 18, }, }, }, ), Raw( PartRaw { content: "etc", span: Span { start: Position { line: 273, column: 19, }, end: Position { line: 273, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 273, column: 25, }, end: Position { line: 273, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "etcClusterAdminKubeconfig", span: Span { start: Position { line: 273, column: 29, }, end: Position { line: 273, column: 54, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "source", span: Span { start: Position { line: 273, column: 56, }, end: Position { line: 273, column: 62, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 273, column: 65, }, end: Position { line: 273, column: 69, }, }, }, ), arguments: [ UnaryOperation( UnaryOperation { operator: Not, operand: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isNull", span: Span { start: Position { line: 273, column: 72, }, end: Position { line: 273, column: 78, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 273, column: 79, }, end: Position { line: 273, column: 82, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "etcClusterAdminKubeconfig", span: Span { start: Position { line: 273, column: 83, }, end: Position { line: 273, column: 108, }, }, }, ), ], default: None, }, ), ], }, ), span: Span { start: Position { line: 273, column: 71, }, end: Position { line: 273, column: 108, }, }, }, ), Identifier( Identifier { id: "clusterAdminKubeconfig", span: Span { start: Position { line: 274, column: 9, }, end: Position { line: 274, column: 31, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 276, column: 7, }, end: Position { line: 276, column: 18, }, }, }, ), Raw( PartRaw { content: "systemPackages", span: Span { start: Position { line: 276, column: 19, }, end: Position { line: 276, column: 33, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 276, column: 36, }, end: Position { line: 276, column: 40, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 276, column: 42, }, end: Position { line: 276, column: 45, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "kubelet", span: Span { start: Position { line: 276, column: 46, }, end: Position { line: 276, column: 53, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 276, column: 54, }, end: Position { line: 276, column: 60, }, }, }, ), ], default: None, }, ), operator: LogicalOr, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 276, column: 64, }, end: Position { line: 276, column: 67, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "proxy", span: Span { start: Position { line: 276, column: 68, }, end: Position { line: 276, column: 73, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 276, column: 74, }, end: Position { line: 276, column: 80, }, }, }, ), ], default: None, }, ), }, ), List( List { elements: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 277, column: 8, }, end: Position { line: 277, column: 12, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeScriptBin", span: Span { start: Position { line: 277, column: 13, }, end: Position { line: 277, column: 27, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "nixos-kubernetes-node-join", span: Span { start: Position { line: 277, column: 29, }, end: Position { line: 277, column: 55, }, }, }, ), ], span: Span { start: Position { line: 277, column: 28, }, end: Position { line: 277, column: 56, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "set -e\nexec 1>&2\n\nif [ $# -gt 0 ]; then\n echo \"Usage: $(basename $0)\"\n echo \"\"\n echo \"No args. Apitoken must be provided on stdin.\"\n echo \"To get the apitoken, execute: 'sudo cat ", span: Span { start: Position { line: 278, column: 1, }, end: Position { line: 285, column: 57, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "certmgrAPITokenPath", span: Span { start: Position { line: 285, column: 59, }, end: Position { line: 285, column: 78, }, }, }, ), }, ), Raw( PartRaw { content: "' on the master node.\"\n exit 1\nfi\n\nif [ $(id -u) != 0 ]; then\n echo \"Run as root please.\"\n exit 1\nfi\n\nread -r token\nif [ ", span: Span { start: Position { line: 278, column: 1, }, end: Position { line: 295, column: 14, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 278, column: 1, }, end: Position { line: 295, column: 17, }, }, }, ), Raw( PartRaw { content: "{#token} != ", span: Span { start: Position { line: 278, column: 1, }, end: Position { line: 295, column: 29, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 295, column: 31, }, end: Position { line: 295, column: 39, }, }, }, ), arguments: [ Identifier( Identifier { id: "cfsslAPITokenLength", span: Span { start: Position { line: 295, column: 40, }, end: Position { line: 295, column: 59, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: " ]; then\n echo \"Token must be of length ", span: Span { start: Position { line: 278, column: 1, }, end: Position { line: 296, column: 41, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 296, column: 43, }, end: Position { line: 296, column: 51, }, }, }, ), arguments: [ Identifier( Identifier { id: "cfsslAPITokenLength", span: Span { start: Position { line: 296, column: 52, }, end: Position { line: 296, column: 71, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: ".\"\n exit 1\nfi\n\necho $token > ", span: Span { start: Position { line: 278, column: 1, }, end: Position { line: 300, column: 23, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "certmgrAPITokenPath", span: Span { start: Position { line: 300, column: 25, }, end: Position { line: 300, column: 44, }, }, }, ), }, ), Raw( PartRaw { content: "\nchmod 600 ", span: Span { start: Position { line: 278, column: 1, }, end: Position { line: 301, column: 19, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "certmgrAPITokenPath", span: Span { start: Position { line: 301, column: 21, }, end: Position { line: 301, column: 40, }, }, }, ), }, ), Raw( PartRaw { content: "\n\necho \"Restarting certmgr...\" >&1\nsystemctl restart certmgr\n\necho \"Waiting for certs to appear...\" >&1\n\n", span: Span { start: Position { line: 278, column: 1, }, end: Position { line: 308, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 308, column: 11, }, end: Position { line: 308, column: 25, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 308, column: 26, }, end: Position { line: 308, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "kubelet", span: Span { start: Position { line: 308, column: 30, }, end: Position { line: 308, column: 37, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 308, column: 38, }, end: Position { line: 308, column: 44, }, }, }, ), ], default: None, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "while [ ! -f ", span: Span { start: Position { line: 309, column: 1, }, end: Position { line: 309, column: 24, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 309, column: 26, }, end: Position { line: 309, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 309, column: 30, }, end: Position { line: 309, column: 35, }, }, }, ), Raw( PartRaw { content: "kubelet", span: Span { start: Position { line: 309, column: 36, }, end: Position { line: 309, column: 43, }, }, }, ), Raw( PartRaw { content: "cert", span: Span { start: Position { line: 309, column: 44, }, end: Position { line: 309, column: 48, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ]; do sleep 1; done\necho \"Restarting kubelet...\" >&1\nsystemctl restart kubelet\n", span: Span { start: Position { line: 309, column: 1, }, end: Position { line: 312, column: 9, }, }, }, ), ], span: Span { start: Position { line: 308, column: 45, }, end: Position { line: 312, column: 11, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n\n", span: Span { start: Position { line: 278, column: 1, }, end: Position { line: 314, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 314, column: 11, }, end: Position { line: 314, column: 25, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 314, column: 26, }, end: Position { line: 314, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "proxy", span: Span { start: Position { line: 314, column: 30, }, end: Position { line: 314, column: 35, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 314, column: 36, }, end: Position { line: 314, column: 42, }, }, }, ), ], default: None, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "while [ ! -f ", span: Span { start: Position { line: 315, column: 1, }, end: Position { line: 315, column: 24, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 315, column: 26, }, end: Position { line: 315, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 315, column: 30, }, end: Position { line: 315, column: 35, }, }, }, ), Raw( PartRaw { content: "kubeProxyClient", span: Span { start: Position { line: 315, column: 36, }, end: Position { line: 315, column: 51, }, }, }, ), Raw( PartRaw { content: "cert", span: Span { start: Position { line: 315, column: 52, }, end: Position { line: 315, column: 56, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ]; do sleep 1; done\necho \"Restarting kube-proxy...\" >&1\nsystemctl restart kube-proxy\n", span: Span { start: Position { line: 315, column: 1, }, end: Position { line: 318, column: 9, }, }, }, ), ], span: Span { start: Position { line: 314, column: 43, }, end: Position { line: 318, column: 11, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n\n", span: Span { start: Position { line: 278, column: 1, }, end: Position { line: 320, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 320, column: 11, }, end: Position { line: 320, column: 25, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 320, column: 26, }, end: Position { line: 320, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "flannel", span: Span { start: Position { line: 320, column: 30, }, end: Position { line: 320, column: 37, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 320, column: 38, }, end: Position { line: 320, column: 44, }, }, }, ), ], default: None, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "while [ ! -f ", span: Span { start: Position { line: 321, column: 1, }, end: Position { line: 321, column: 24, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 321, column: 26, }, end: Position { line: 321, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 321, column: 30, }, end: Position { line: 321, column: 35, }, }, }, ), Raw( PartRaw { content: "flannelClient", span: Span { start: Position { line: 321, column: 36, }, end: Position { line: 321, column: 49, }, }, }, ), Raw( PartRaw { content: "cert", span: Span { start: Position { line: 321, column: 50, }, end: Position { line: 321, column: 54, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ]; do sleep 1; done\necho \"Restarting flannel...\" >&1\nsystemctl restart flannel\n", span: Span { start: Position { line: 321, column: 1, }, end: Position { line: 324, column: 9, }, }, }, ), ], span: Span { start: Position { line: 320, column: 45, }, end: Position { line: 324, column: 11, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n\necho \"Node joined succesfully\"\n", span: Span { start: Position { line: 278, column: 1, }, end: Position { line: 327, column: 7, }, }, }, ), ], span: Span { start: Position { line: 277, column: 57, }, end: Position { line: 327, column: 9, }, }, }, ), ], }, ), ], span: Span { start: Position { line: 276, column: 82, }, end: Position { line: 327, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 331, column: 7, }, end: Position { line: 331, column: 15, }, }, }, ), Raw( PartRaw { content: "etcd", span: Span { start: Position { line: 331, column: 16, }, end: Position { line: 331, column: 20, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 331, column: 28, }, end: Position { line: 331, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 331, column: 32, }, end: Position { line: 331, column: 37, }, }, }, ), Raw( PartRaw { content: "etcd", span: Span { start: Position { line: 331, column: 38, }, end: Position { line: 331, column: 42, }, }, }, ), ], default: None, }, ), target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "listenClientUrls", span: Span { start: Position { line: 332, column: 9, }, end: Position { line: 332, column: 25, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "https://127.0.0.1:2379", span: Span { start: Position { line: 332, column: 30, }, end: Position { line: 332, column: 52, }, }, }, ), ], span: Span { start: Position { line: 332, column: 29, }, end: Position { line: 332, column: 53, }, }, }, ), ], span: Span { start: Position { line: 332, column: 28, }, end: Position { line: 332, column: 54, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "listenPeerUrls", span: Span { start: Position { line: 333, column: 9, }, end: Position { line: 333, column: 23, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "https://127.0.0.1:2380", span: Span { start: Position { line: 333, column: 28, }, end: Position { line: 333, column: 50, }, }, }, ), ], span: Span { start: Position { line: 333, column: 27, }, end: Position { line: 333, column: 51, }, }, }, ), ], span: Span { start: Position { line: 333, column: 26, }, end: Position { line: 333, column: 52, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "advertiseClientUrls", span: Span { start: Position { line: 334, column: 9, }, end: Position { line: 334, column: 28, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "https://etcd.local:2379", span: Span { start: Position { line: 334, column: 33, }, end: Position { line: 334, column: 56, }, }, }, ), ], span: Span { start: Position { line: 334, column: 32, }, end: Position { line: 334, column: 57, }, }, }, ), ], span: Span { start: Position { line: 334, column: 31, }, end: Position { line: 334, column: 58, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "initialCluster", span: Span { start: Position { line: 335, column: 9, }, end: Position { line: 335, column: 23, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 335, column: 30, }, end: Position { line: 335, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "masterAddress", span: Span { start: Position { line: 335, column: 34, }, end: Position { line: 335, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "=https://etcd.local:2380", span: Span { start: Position { line: 335, column: 28, }, end: Position { line: 335, column: 72, }, }, }, ), ], span: Span { start: Position { line: 335, column: 27, }, end: Position { line: 335, column: 73, }, }, }, ), ], span: Span { start: Position { line: 335, column: 26, }, end: Position { line: 335, column: 74, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "initialAdvertisePeerUrls", span: Span { start: Position { line: 336, column: 9, }, end: Position { line: 336, column: 33, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "https://etcd.local:2380", span: Span { start: Position { line: 336, column: 38, }, end: Position { line: 336, column: 61, }, }, }, ), ], span: Span { start: Position { line: 336, column: 37, }, end: Position { line: 336, column: 62, }, }, }, ), ], span: Span { start: Position { line: 336, column: 36, }, end: Position { line: 336, column: 63, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 337, column: 9, }, end: Position { line: 337, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 337, column: 20, }, end: Position { line: 337, column: 29, }, }, }, ), arguments: [ Identifier( Identifier { id: "cert", span: Span { start: Position { line: 337, column: 30, }, end: Position { line: 337, column: 34, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 338, column: 9, }, end: Position { line: 338, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 338, column: 19, }, end: Position { line: 338, column: 28, }, }, }, ), arguments: [ Identifier( Identifier { id: "key", span: Span { start: Position { line: 338, column: 29, }, end: Position { line: 338, column: 32, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "trustedCaFile", span: Span { start: Position { line: 339, column: 9, }, end: Position { line: 339, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 339, column: 25, }, end: Position { line: 339, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "caCert", span: Span { start: Position { line: 339, column: 35, }, end: Position { line: 339, column: 41, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 331, column: 44, }, end: Position { line: 340, column: 8, }, }, }, ), span: Span { start: Position { line: 331, column: 23, }, end: Position { line: 340, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "networking", span: Span { start: Position { line: 341, column: 7, }, end: Position { line: 341, column: 17, }, }, }, ), Raw( PartRaw { content: "extraHosts", span: Span { start: Position { line: 341, column: 18, }, end: Position { line: 341, column: 28, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 341, column: 31, }, end: Position { line: 341, column: 35, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 341, column: 37, }, end: Position { line: 341, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 341, column: 44, }, end: Position { line: 341, column: 52, }, }, }, ), Raw( PartRaw { content: "etcd", span: Span { start: Position { line: 341, column: 53, }, end: Position { line: 341, column: 57, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 341, column: 58, }, end: Position { line: 341, column: 64, }, }, }, ), ], default: None, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "127.0.0.1 etcd.", span: Span { start: Position { line: 342, column: 1, }, end: Position { line: 342, column: 24, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 342, column: 26, }, end: Position { line: 342, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "addons", span: Span { start: Position { line: 342, column: 30, }, end: Position { line: 342, column: 36, }, }, }, ), Raw( PartRaw { content: "dns", span: Span { start: Position { line: 342, column: 37, }, end: Position { line: 342, column: 40, }, }, }, ), Raw( PartRaw { content: "clusterDomain", span: Span { start: Position { line: 342, column: 41, }, end: Position { line: 342, column: 54, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " etcd.local\n", span: Span { start: Position { line: 342, column: 1, }, end: Position { line: 343, column: 7, }, }, }, ), ], span: Span { start: Position { line: 341, column: 66, }, end: Position { line: 343, column: 9, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 345, column: 7, }, end: Position { line: 345, column: 15, }, }, }, ), Raw( PartRaw { content: "flannel", span: Span { start: Position { line: 345, column: 16, }, end: Position { line: 345, column: 23, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 345, column: 31, }, end: Position { line: 345, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 345, column: 35, }, end: Position { line: 345, column: 40, }, }, }, ), Raw( PartRaw { content: "flannelClient", span: Span { start: Position { line: 345, column: 41, }, end: Position { line: 345, column: 54, }, }, }, ), ], default: None, }, ), target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "kubeconfig", span: Span { start: Position { line: 346, column: 9, }, end: Position { line: 346, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 346, column: 22, }, end: Position { line: 346, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lib", span: Span { start: Position { line: 346, column: 26, }, end: Position { line: 346, column: 29, }, }, }, ), Raw( PartRaw { content: "mkKubeConfig", span: Span { start: Position { line: 346, column: 30, }, end: Position { line: 346, column: 42, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "flannel", span: Span { start: Position { line: 346, column: 44, }, end: Position { line: 346, column: 51, }, }, }, ), ], span: Span { start: Position { line: 346, column: 43, }, end: Position { line: 346, column: 52, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "server", span: Span { start: Position { line: 347, column: 11, }, end: Position { line: 347, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 347, column: 20, }, end: Position { line: 347, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "apiserverAddress", span: Span { start: Position { line: 347, column: 24, }, end: Position { line: 347, column: 40, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 348, column: 11, }, end: Position { line: 348, column: 19, }, }, }, ), ], to: Identifier( Identifier { id: "cert", span: Span { start: Position { line: 348, column: 22, }, end: Position { line: 348, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 349, column: 11, }, end: Position { line: 349, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "key", span: Span { start: Position { line: 349, column: 21, }, end: Position { line: 349, column: 24, }, }, }, ), }, ), ], span: Span { start: Position { line: 346, column: 53, }, end: Position { line: 350, column: 10, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 345, column: 56, }, end: Position { line: 351, column: 8, }, }, }, ), span: Span { start: Position { line: 345, column: 26, }, end: Position { line: 351, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 353, column: 7, }, end: Position { line: 353, column: 15, }, }, }, ), Raw( PartRaw { content: "kubernetes", span: Span { start: Position { line: 353, column: 16, }, end: Position { line: 353, column: 26, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "apiserver", span: Span { start: Position { line: 355, column: 9, }, end: Position { line: 355, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 355, column: 21, }, end: Position { line: 355, column: 25, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 355, column: 26, }, end: Position { line: 355, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "apiserver", span: Span { start: Position { line: 355, column: 30, }, end: Position { line: 355, column: 39, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 355, column: 40, }, end: Position { line: 355, column: 46, }, }, }, ), ], default: None, }, ), With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 355, column: 53, }, end: Position { line: 355, column: 56, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 355, column: 57, }, end: Position { line: 355, column: 62, }, }, }, ), Raw( PartRaw { content: "apiServer", span: Span { start: Position { line: 355, column: 63, }, end: Position { line: 355, column: 72, }, }, }, ), ], default: None, }, ), target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "etcd", span: Span { start: Position { line: 356, column: 11, }, end: Position { line: 356, column: 15, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 356, column: 23, }, end: Position { line: 356, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 356, column: 27, }, end: Position { line: 356, column: 32, }, }, }, ), Raw( PartRaw { content: "apiserverEtcdClient", span: Span { start: Position { line: 356, column: 33, }, end: Position { line: 356, column: 52, }, }, }, ), ], default: None, }, ), target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "servers", span: Span { start: Position { line: 357, column: 13, }, end: Position { line: 357, column: 20, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "https://etcd.local:2379", span: Span { start: Position { line: 357, column: 25, }, end: Position { line: 357, column: 48, }, }, }, ), ], span: Span { start: Position { line: 357, column: 24, }, end: Position { line: 357, column: 49, }, }, }, ), ], span: Span { start: Position { line: 357, column: 23, }, end: Position { line: 357, column: 50, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 358, column: 13, }, end: Position { line: 358, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 358, column: 24, }, end: Position { line: 358, column: 33, }, }, }, ), arguments: [ Identifier( Identifier { id: "cert", span: Span { start: Position { line: 358, column: 34, }, end: Position { line: 358, column: 38, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 359, column: 13, }, end: Position { line: 359, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 359, column: 23, }, end: Position { line: 359, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "key", span: Span { start: Position { line: 359, column: 33, }, end: Position { line: 359, column: 36, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "caFile", span: Span { start: Position { line: 360, column: 13, }, end: Position { line: 360, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 360, column: 22, }, end: Position { line: 360, column: 31, }, }, }, ), arguments: [ Identifier( Identifier { id: "caCert", span: Span { start: Position { line: 360, column: 32, }, end: Position { line: 360, column: 38, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 356, column: 54, }, end: Position { line: 361, column: 12, }, }, }, ), span: Span { start: Position { line: 356, column: 18, }, end: Position { line: 361, column: 12, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "clientCaFile", span: Span { start: Position { line: 362, column: 11, }, end: Position { line: 362, column: 23, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 362, column: 26, }, end: Position { line: 362, column: 35, }, }, }, ), arguments: [ Identifier( Identifier { id: "caCert", span: Span { start: Position { line: 362, column: 36, }, end: Position { line: 362, column: 42, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "tlsCertFile", span: Span { start: Position { line: 363, column: 11, }, end: Position { line: 363, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 363, column: 25, }, end: Position { line: 363, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "cert", span: Span { start: Position { line: 363, column: 35, }, end: Position { line: 363, column: 39, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "tlsKeyFile", span: Span { start: Position { line: 364, column: 11, }, end: Position { line: 364, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 364, column: 24, }, end: Position { line: 364, column: 33, }, }, }, ), arguments: [ Identifier( Identifier { id: "key", span: Span { start: Position { line: 364, column: 34, }, end: Position { line: 364, column: 37, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceAccountKeyFile", span: Span { start: Position { line: 365, column: 11, }, end: Position { line: 365, column: 32, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 365, column: 35, }, end: Position { line: 365, column: 44, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 365, column: 45, }, end: Position { line: 365, column: 48, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 365, column: 49, }, end: Position { line: 365, column: 54, }, }, }, ), Raw( PartRaw { content: "serviceAccount", span: Span { start: Position { line: 365, column: 55, }, end: Position { line: 365, column: 69, }, }, }, ), Raw( PartRaw { content: "cert", span: Span { start: Position { line: 365, column: 70, }, end: Position { line: 365, column: 74, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceAccountSigningKeyFile", span: Span { start: Position { line: 366, column: 11, }, end: Position { line: 366, column: 39, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 366, column: 42, }, end: Position { line: 366, column: 51, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 366, column: 52, }, end: Position { line: 366, column: 55, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 366, column: 56, }, end: Position { line: 366, column: 61, }, }, }, ), Raw( PartRaw { content: "serviceAccount", span: Span { start: Position { line: 366, column: 62, }, end: Position { line: 366, column: 76, }, }, }, ), Raw( PartRaw { content: "key", span: Span { start: Position { line: 366, column: 77, }, end: Position { line: 366, column: 80, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "kubeletClientCaFile", span: Span { start: Position { line: 367, column: 11, }, end: Position { line: 367, column: 30, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 367, column: 33, }, end: Position { line: 367, column: 42, }, }, }, ), arguments: [ Identifier( Identifier { id: "caCert", span: Span { start: Position { line: 367, column: 43, }, end: Position { line: 367, column: 49, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "kubeletClientCertFile", span: Span { start: Position { line: 368, column: 11, }, end: Position { line: 368, column: 32, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 368, column: 35, }, end: Position { line: 368, column: 44, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 368, column: 45, }, end: Position { line: 368, column: 48, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 368, column: 49, }, end: Position { line: 368, column: 54, }, }, }, ), Raw( PartRaw { content: "apiserverKubeletClient", span: Span { start: Position { line: 368, column: 55, }, end: Position { line: 368, column: 77, }, }, }, ), Raw( PartRaw { content: "cert", span: Span { start: Position { line: 368, column: 78, }, end: Position { line: 368, column: 82, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "kubeletClientKeyFile", span: Span { start: Position { line: 369, column: 11, }, end: Position { line: 369, column: 31, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 369, column: 34, }, end: Position { line: 369, column: 43, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 369, column: 44, }, end: Position { line: 369, column: 47, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 369, column: 48, }, end: Position { line: 369, column: 53, }, }, }, ), Raw( PartRaw { content: "apiserverKubeletClient", span: Span { start: Position { line: 369, column: 54, }, end: Position { line: 369, column: 76, }, }, }, ), Raw( PartRaw { content: "key", span: Span { start: Position { line: 369, column: 77, }, end: Position { line: 369, column: 80, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "proxyClientCertFile", span: Span { start: Position { line: 370, column: 11, }, end: Position { line: 370, column: 30, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 370, column: 33, }, end: Position { line: 370, column: 42, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 370, column: 43, }, end: Position { line: 370, column: 46, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 370, column: 47, }, end: Position { line: 370, column: 52, }, }, }, ), Raw( PartRaw { content: "apiserverProxyClient", span: Span { start: Position { line: 370, column: 53, }, end: Position { line: 370, column: 73, }, }, }, ), Raw( PartRaw { content: "cert", span: Span { start: Position { line: 370, column: 74, }, end: Position { line: 370, column: 78, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "proxyClientKeyFile", span: Span { start: Position { line: 371, column: 11, }, end: Position { line: 371, column: 29, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 371, column: 32, }, end: Position { line: 371, column: 41, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 371, column: 42, }, end: Position { line: 371, column: 45, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 371, column: 46, }, end: Position { line: 371, column: 51, }, }, }, ), Raw( PartRaw { content: "apiserverProxyClient", span: Span { start: Position { line: 371, column: 52, }, end: Position { line: 371, column: 72, }, }, }, ), Raw( PartRaw { content: "key", span: Span { start: Position { line: 371, column: 73, }, end: Position { line: 371, column: 76, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 355, column: 74, }, end: Position { line: 372, column: 10, }, }, }, ), span: Span { start: Position { line: 355, column: 48, }, end: Position { line: 372, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "controllerManager", span: Span { start: Position { line: 373, column: 9, }, end: Position { line: 373, column: 26, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 373, column: 29, }, end: Position { line: 373, column: 33, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 373, column: 34, }, end: Position { line: 373, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "controllerManager", span: Span { start: Position { line: 373, column: 38, }, end: Position { line: 373, column: 55, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 373, column: 56, }, end: Position { line: 373, column: 62, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceAccountKeyFile", span: Span { start: Position { line: 374, column: 11, }, end: Position { line: 374, column: 32, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 374, column: 35, }, end: Position { line: 374, column: 44, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 374, column: 45, }, end: Position { line: 374, column: 48, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 374, column: 49, }, end: Position { line: 374, column: 54, }, }, }, ), Raw( PartRaw { content: "serviceAccount", span: Span { start: Position { line: 374, column: 55, }, end: Position { line: 374, column: 69, }, }, }, ), Raw( PartRaw { content: "key", span: Span { start: Position { line: 374, column: 70, }, end: Position { line: 374, column: 73, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "rootCaFile", span: Span { start: Position { line: 375, column: 11, }, end: Position { line: 375, column: 21, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 375, column: 24, }, end: Position { line: 375, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 375, column: 28, }, end: Position { line: 375, column: 33, }, }, }, ), Raw( PartRaw { content: "controllerManagerClient", span: Span { start: Position { line: 375, column: 34, }, end: Position { line: 375, column: 57, }, }, }, ), Raw( PartRaw { content: "caCert", span: Span { start: Position { line: 375, column: 58, }, end: Position { line: 375, column: 64, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "kubeconfig", span: Span { start: Position { line: 376, column: 11, }, end: Position { line: 376, column: 21, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 376, column: 29, }, end: Position { line: 376, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 376, column: 33, }, end: Position { line: 376, column: 38, }, }, }, ), Raw( PartRaw { content: "controllerManagerClient", span: Span { start: Position { line: 376, column: 39, }, end: Position { line: 376, column: 62, }, }, }, ), ], default: None, }, ), target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 377, column: 13, }, end: Position { line: 377, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 377, column: 24, }, end: Position { line: 377, column: 33, }, }, }, ), arguments: [ Identifier( Identifier { id: "cert", span: Span { start: Position { line: 377, column: 34, }, end: Position { line: 377, column: 38, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 378, column: 13, }, end: Position { line: 378, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 378, column: 23, }, end: Position { line: 378, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "key", span: Span { start: Position { line: 378, column: 33, }, end: Position { line: 378, column: 36, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 376, column: 64, }, end: Position { line: 379, column: 12, }, }, }, ), span: Span { start: Position { line: 376, column: 24, }, end: Position { line: 379, column: 12, }, }, }, ), }, ), ], span: Span { start: Position { line: 373, column: 63, }, end: Position { line: 380, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "scheduler", span: Span { start: Position { line: 381, column: 9, }, end: Position { line: 381, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 381, column: 21, }, end: Position { line: 381, column: 25, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 381, column: 26, }, end: Position { line: 381, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "scheduler", span: Span { start: Position { line: 381, column: 30, }, end: Position { line: 381, column: 39, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 381, column: 40, }, end: Position { line: 381, column: 46, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "kubeconfig", span: Span { start: Position { line: 382, column: 11, }, end: Position { line: 382, column: 21, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 382, column: 29, }, end: Position { line: 382, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 382, column: 33, }, end: Position { line: 382, column: 38, }, }, }, ), Raw( PartRaw { content: "schedulerClient", span: Span { start: Position { line: 382, column: 39, }, end: Position { line: 382, column: 54, }, }, }, ), ], default: None, }, ), target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 383, column: 13, }, end: Position { line: 383, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 383, column: 24, }, end: Position { line: 383, column: 33, }, }, }, ), arguments: [ Identifier( Identifier { id: "cert", span: Span { start: Position { line: 383, column: 34, }, end: Position { line: 383, column: 38, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 384, column: 13, }, end: Position { line: 384, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 384, column: 23, }, end: Position { line: 384, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "key", span: Span { start: Position { line: 384, column: 33, }, end: Position { line: 384, column: 36, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 382, column: 56, }, end: Position { line: 385, column: 12, }, }, }, ), span: Span { start: Position { line: 382, column: 24, }, end: Position { line: 385, column: 12, }, }, }, ), }, ), ], span: Span { start: Position { line: 381, column: 47, }, end: Position { line: 386, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "kubelet", span: Span { start: Position { line: 387, column: 9, }, end: Position { line: 387, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 387, column: 19, }, end: Position { line: 387, column: 23, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 387, column: 24, }, end: Position { line: 387, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "kubelet", span: Span { start: Position { line: 387, column: 28, }, end: Position { line: 387, column: 35, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 387, column: 36, }, end: Position { line: 387, column: 42, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "clientCaFile", span: Span { start: Position { line: 388, column: 11, }, end: Position { line: 388, column: 23, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 388, column: 26, }, end: Position { line: 388, column: 35, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 388, column: 36, }, end: Position { line: 388, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 388, column: 40, }, end: Position { line: 388, column: 45, }, }, }, ), Raw( PartRaw { content: "kubelet", span: Span { start: Position { line: 388, column: 46, }, end: Position { line: 388, column: 53, }, }, }, ), Raw( PartRaw { content: "caCert", span: Span { start: Position { line: 388, column: 54, }, end: Position { line: 388, column: 60, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "tlsCertFile", span: Span { start: Position { line: 389, column: 11, }, end: Position { line: 389, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 389, column: 25, }, end: Position { line: 389, column: 34, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 389, column: 35, }, end: Position { line: 389, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 389, column: 39, }, end: Position { line: 389, column: 44, }, }, }, ), Raw( PartRaw { content: "kubelet", span: Span { start: Position { line: 389, column: 45, }, end: Position { line: 389, column: 52, }, }, }, ), Raw( PartRaw { content: "cert", span: Span { start: Position { line: 389, column: 53, }, end: Position { line: 389, column: 57, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "tlsKeyFile", span: Span { start: Position { line: 390, column: 11, }, end: Position { line: 390, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 390, column: 24, }, end: Position { line: 390, column: 33, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 390, column: 34, }, end: Position { line: 390, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 390, column: 38, }, end: Position { line: 390, column: 43, }, }, }, ), Raw( PartRaw { content: "kubelet", span: Span { start: Position { line: 390, column: 44, }, end: Position { line: 390, column: 51, }, }, }, ), Raw( PartRaw { content: "key", span: Span { start: Position { line: 390, column: 52, }, end: Position { line: 390, column: 55, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "kubeconfig", span: Span { start: Position { line: 391, column: 11, }, end: Position { line: 391, column: 21, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 391, column: 29, }, end: Position { line: 391, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 391, column: 33, }, end: Position { line: 391, column: 38, }, }, }, ), Raw( PartRaw { content: "kubeletClient", span: Span { start: Position { line: 391, column: 39, }, end: Position { line: 391, column: 52, }, }, }, ), ], default: None, }, ), target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 392, column: 13, }, end: Position { line: 392, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 392, column: 24, }, end: Position { line: 392, column: 33, }, }, }, ), arguments: [ Identifier( Identifier { id: "cert", span: Span { start: Position { line: 392, column: 34, }, end: Position { line: 392, column: 38, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 393, column: 13, }, end: Position { line: 393, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 393, column: 23, }, end: Position { line: 393, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "key", span: Span { start: Position { line: 393, column: 33, }, end: Position { line: 393, column: 36, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 391, column: 54, }, end: Position { line: 394, column: 12, }, }, }, ), span: Span { start: Position { line: 391, column: 24, }, end: Position { line: 394, column: 12, }, }, }, ), }, ), ], span: Span { start: Position { line: 387, column: 43, }, end: Position { line: 395, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "proxy", span: Span { start: Position { line: 396, column: 9, }, end: Position { line: 396, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 396, column: 17, }, end: Position { line: 396, column: 21, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "top", span: Span { start: Position { line: 396, column: 22, }, end: Position { line: 396, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "proxy", span: Span { start: Position { line: 396, column: 26, }, end: Position { line: 396, column: 31, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 396, column: 32, }, end: Position { line: 396, column: 38, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "kubeconfig", span: Span { start: Position { line: 397, column: 11, }, end: Position { line: 397, column: 21, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 397, column: 29, }, end: Position { line: 397, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "certs", span: Span { start: Position { line: 397, column: 33, }, end: Position { line: 397, column: 38, }, }, }, ), Raw( PartRaw { content: "kubeProxyClient", span: Span { start: Position { line: 397, column: 39, }, end: Position { line: 397, column: 54, }, }, }, ), ], default: None, }, ), target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 398, column: 13, }, end: Position { line: 398, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 398, column: 24, }, end: Position { line: 398, column: 33, }, }, }, ), arguments: [ Identifier( Identifier { id: "cert", span: Span { start: Position { line: 398, column: 34, }, end: Position { line: 398, column: 38, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 399, column: 13, }, end: Position { line: 399, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 399, column: 23, }, end: Position { line: 399, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "key", span: Span { start: Position { line: 399, column: 33, }, end: Position { line: 399, column: 36, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 397, column: 56, }, end: Position { line: 400, column: 12, }, }, }, ), span: Span { start: Position { line: 397, column: 24, }, end: Position { line: 400, column: 12, }, }, }, ), }, ), ], span: Span { start: Position { line: 396, column: 39, }, end: Position { line: 401, column: 10, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 353, column: 29, }, end: Position { line: 402, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 134, column: 3, }, end: Position { line: 403, column: 6, }, }, }, ), span: Span { start: Position { line: 129, column: 4, }, end: Position { line: 403, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "meta", span: Span { start: Position { line: 405, column: 3, }, end: Position { line: 405, column: 7, }, }, }, ), Raw( PartRaw { content: "buildDocsInSandbox", span: Span { start: Position { line: 405, column: 8, }, end: Position { line: 405, column: 26, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 405, column: 29, }, end: Position { line: 405, column: 34, }, }, }, ), }, ), ], span: Span { start: Position { line: 40, column: 1, }, end: Position { line: 406, column: 2, }, }, }, ), span: Span { start: Position { line: 5, column: 1, }, end: Position { line: 406, column: 2, }, }, }, ), span: Span { start: Position { line: 3, column: 1, }, end: Position { line: 406, column: 2, }, }, }, ), span: Span { start: Position { line: 1, column: 1, }, end: Position { line: 406, column: 2, }, }, }, )