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: "cfg", span: Span { start: Position { line: 7, column: 3, }, end: Position { line: 7, column: 6, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 7, column: 9, }, end: Position { line: 7, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 7, column: 16, }, end: Position { line: 7, column: 24, }, }, }, ), Raw( PartRaw { content: "gitit", span: Span { start: Position { line: 7, column: 25, }, end: Position { line: 7, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "homeDir", span: Span { start: Position { line: 9, column: 3, }, end: Position { line: 9, column: 10, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/var/lib/gitit", span: Span { start: Position { line: 9, column: 14, }, end: Position { line: 9, column: 28, }, }, }, ), ], span: Span { start: Position { line: 9, column: 13, }, end: Position { line: 9, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "toYesNo", span: Span { start: Position { line: 11, column: 3, }, end: Position { line: 11, column: 10, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "b", }, ), body: IfThenElse( IfThenElse { predicate: Identifier( Identifier { id: "b", span: Span { start: Position { line: 11, column: 19, }, end: Position { line: 11, column: 20, }, }, }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "yes", span: Span { start: Position { line: 11, column: 27, }, end: Position { line: 11, column: 30, }, }, }, ), ], span: Span { start: Position { line: 11, column: 26, }, end: Position { line: 11, column: 31, }, }, }, ), else_: String( String_ { parts: [ Raw( PartRaw { content: "no", span: Span { start: Position { line: 11, column: 38, }, end: Position { line: 11, column: 40, }, }, }, ), ], span: Span { start: Position { line: 11, column: 37, }, end: Position { line: 11, column: 41, }, }, }, ), span: Span { start: Position { line: 11, column: 16, }, end: Position { line: 11, column: 41, }, }, }, ), span: Span { start: Position { line: 11, column: 13, }, end: Position { line: 11, column: 41, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gititShared", span: Span { start: Position { line: 13, column: 3, }, end: Position { line: 13, column: 14, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 13, column: 22, }, end: Position { line: 13, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "haskellPackages", span: Span { start: Position { line: 13, column: 26, }, end: Position { line: 13, column: 41, }, }, }, ), ], default: None, }, ), target: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "gitit", span: Span { start: Position { line: 13, column: 43, }, end: Position { line: 13, column: 48, }, }, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/share/", span: Span { start: Position { line: 13, column: 52, }, end: Position { line: 13, column: 59, }, }, }, ), ], span: Span { start: Position { line: 13, column: 51, }, end: Position { line: 13, column: 60, }, }, }, ), }, ), operator: Addition, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "ghc", span: Span { start: Position { line: 13, column: 63, }, end: Position { line: 13, column: 66, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "targetPrefix", span: Span { start: Position { line: 13, column: 67, }, end: Position { line: 13, column: 79, }, }, }, ), ], default: None, }, ), }, ), operator: Addition, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "ghc", span: Span { start: Position { line: 13, column: 82, }, end: Position { line: 13, column: 85, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "haskellCompilerName", span: Span { start: Position { line: 13, column: 86, }, end: Position { line: 13, column: 105, }, }, }, ), ], default: None, }, ), }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/", span: Span { start: Position { line: 13, column: 109, }, end: Position { line: 13, column: 110, }, }, }, ), ], span: Span { start: Position { line: 13, column: 108, }, end: Position { line: 13, column: 111, }, }, }, ), }, ), operator: Addition, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitit", span: Span { start: Position { line: 13, column: 114, }, end: Position { line: 13, column: 119, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "pname", span: Span { start: Position { line: 13, column: 120, }, end: Position { line: 13, column: 125, }, }, }, ), ], default: None, }, ), }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "-", span: Span { start: Position { line: 13, column: 129, }, end: Position { line: 13, column: 130, }, }, }, ), ], span: Span { start: Position { line: 13, column: 128, }, end: Position { line: 13, column: 131, }, }, }, ), }, ), operator: Addition, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitit", span: Span { start: Position { line: 13, column: 134, }, end: Position { line: 13, column: 139, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "version", span: Span { start: Position { line: 13, column: 140, }, end: Position { line: 13, column: 147, }, }, }, ), ], default: None, }, ), }, ), span: Span { start: Position { line: 13, column: 17, }, end: Position { line: 13, column: 147, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gititWithPkgs", span: Span { start: Position { line: 15, column: 3, }, end: Position { line: 15, column: 16, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "hsPkgs", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "extras", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "hsPkgs", span: Span { start: Position { line: 15, column: 35, }, end: Position { line: 15, column: 41, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "ghcWithPackages", span: Span { start: Position { line: 15, column: 42, }, end: Position { line: 15, column: 57, }, }, }, ), ], default: None, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "self", }, ), body: With( With { expression: Identifier( Identifier { id: "self", span: Span { start: Position { line: 15, column: 70, }, end: Position { line: 15, column: 74, }, }, }, ), target: BinaryOperation( BinaryOperation { left: List( List { elements: [ Identifier( Identifier { id: "gitit", span: Span { start: Position { line: 15, column: 78, }, end: Position { line: 15, column: 83, }, }, }, ), ], span: Span { start: Position { line: 15, column: 76, }, end: Position { line: 15, column: 85, }, }, }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "extras", span: Span { start: Position { line: 15, column: 90, }, end: Position { line: 15, column: 96, }, }, }, ), arguments: [ Identifier( Identifier { id: "self", span: Span { start: Position { line: 15, column: 97, }, end: Position { line: 15, column: 101, }, }, }, ), ], }, ), }, ), span: Span { start: Position { line: 15, column: 65, }, end: Position { line: 15, column: 102, }, }, }, ), span: Span { start: Position { line: 15, column: 59, }, end: Position { line: 15, column: 102, }, }, }, ), ], }, ), span: Span { start: Position { line: 15, column: 27, }, end: Position { line: 15, column: 103, }, }, }, ), span: Span { start: Position { line: 15, column: 19, }, end: Position { line: 15, column: 103, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gititSh", span: Span { start: Position { line: 17, column: 3, }, end: Position { line: 17, column: 10, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "hsPkgs", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "extras", }, ), body: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 17, column: 34, }, end: Position { line: 17, column: 38, }, }, }, ), target: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "env", span: Span { start: Position { line: 18, column: 5, }, end: Position { line: 18, column: 8, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "gititWithPkgs", span: Span { start: Position { line: 18, column: 11, }, end: Position { line: 18, column: 24, }, }, }, ), arguments: [ Identifier( Identifier { id: "hsPkgs", span: Span { start: Position { line: 18, column: 25, }, end: Position { line: 18, column: 31, }, }, }, ), Identifier( Identifier { id: "extras", span: Span { start: Position { line: 18, column: 32, }, end: Position { line: 18, column: 38, }, }, }, ), ], }, ), }, ), ], target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "writeScript", span: Span { start: Position { line: 19, column: 6, }, end: Position { line: 19, column: 17, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "gitit", span: Span { start: Position { line: 19, column: 19, }, end: Position { line: 19, column: 24, }, }, }, ), ], span: Span { start: Position { line: 19, column: 18, }, end: Position { line: 19, column: 25, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "#!", span: Span { start: Position { line: 20, column: 1, }, end: Position { line: 20, column: 7, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "runtimeShell", span: Span { start: Position { line: 20, column: 9, }, end: Position { line: 20, column: 21, }, }, }, ), }, ), Raw( PartRaw { content: "\ncd $HOME\nexport NIX_GHC=\"", span: Span { start: Position { line: 20, column: 1, }, end: Position { line: 22, column: 21, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "env", span: Span { start: Position { line: 22, column: 23, }, end: Position { line: 22, column: 26, }, }, }, ), }, ), Raw( PartRaw { content: "/bin/ghc\"\nexport NIX_GHCPKG=\"", span: Span { start: Position { line: 20, column: 1, }, end: Position { line: 23, column: 24, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "env", span: Span { start: Position { line: 23, column: 26, }, end: Position { line: 23, column: 29, }, }, }, ), }, ), Raw( PartRaw { content: "/bin/ghc-pkg\"\nexport NIX_GHC_DOCDIR=\"", span: Span { start: Position { line: 20, column: 1, }, end: Position { line: 24, column: 28, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "env", span: Span { start: Position { line: 24, column: 30, }, end: Position { line: 24, column: 33, }, }, }, ), }, ), Raw( PartRaw { content: "/share/doc/ghc/html\"\nexport NIX_GHC_LIBDIR=$( $NIX_GHC --print-libdir )\n", span: Span { start: Position { line: 20, column: 1, }, end: Position { line: 26, column: 5, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "env", span: Span { start: Position { line: 26, column: 7, }, end: Position { line: 26, column: 10, }, }, }, ), }, ), Raw( PartRaw { content: "/bin/gitit -f ", span: Span { start: Position { line: 20, column: 1, }, end: Position { line: 26, column: 25, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "configFile", span: Span { start: Position { line: 26, column: 27, }, end: Position { line: 26, column: 37, }, }, }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 20, column: 1, }, end: Position { line: 27, column: 3, }, }, }, ), ], span: Span { start: Position { line: 19, column: 26, }, end: Position { line: 27, column: 5, }, }, }, ), ], }, ), span: Span { start: Position { line: 17, column: 40, }, end: Position { line: 27, column: 5, }, }, }, ), span: Span { start: Position { line: 17, column: 29, }, end: Position { line: 27, column: 5, }, }, }, ), span: Span { start: Position { line: 17, column: 21, }, end: Position { line: 27, column: 5, }, }, }, ), span: Span { start: Position { line: 17, column: 13, }, end: Position { line: 27, column: 5, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gititOptions", span: Span { start: Position { line: 29, column: 3, }, end: Position { line: 29, column: 15, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 31, column: 7, }, end: Position { line: 31, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 31, column: 16, }, end: Position { line: 31, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 32, column: 9, }, end: Position { line: 32, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 32, column: 16, }, end: Position { line: 32, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 32, column: 22, }, end: Position { line: 32, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 33, column: 9, }, end: Position { line: 33, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 33, column: 19, }, end: Position { line: 33, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 34, column: 9, }, end: Position { line: 34, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 34, column: 23, }, end: Position { line: 34, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 34, column: 27, }, end: Position { line: 34, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Enable the gitit service.", span: Span { start: Position { line: 34, column: 34, }, end: Position { line: 34, column: 59, }, }, }, ), ], span: Span { start: Position { line: 34, column: 33, }, end: Position { line: 34, column: 60, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 31, column: 25, }, end: Position { line: 35, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "haskellPackages", span: Span { start: Position { line: 37, column: 7, }, end: Position { line: 37, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 37, column: 25, }, end: Position { line: 37, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 38, column: 9, }, end: Position { line: 38, column: 16, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 38, column: 19, }, end: Position { line: 38, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "haskellPackages", span: Span { start: Position { line: 38, column: 24, }, end: Position { line: 38, column: 39, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 39, column: 9, }, end: Position { line: 39, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 39, column: 23, }, end: Position { line: 39, column: 40, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "pkgs.haskellPackages", span: Span { start: Position { line: 39, column: 42, }, end: Position { line: 39, column: 62, }, }, }, ), ], span: Span { start: Position { line: 39, column: 41, }, end: Position { line: 39, column: 63, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 40, column: 9, }, end: Position { line: 40, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 40, column: 19, }, end: Position { line: 40, column: 36, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "pkgs.haskell.packages.ghc784", span: Span { start: Position { line: 40, column: 38, }, end: Position { line: 40, column: 66, }, }, }, ), ], span: Span { start: Position { line: 40, column: 37, }, end: Position { line: 40, column: 67, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 41, column: 9, }, end: Position { line: 41, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 41, column: 23, }, end: Position { line: 41, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 41, column: 27, }, end: Position { line: 41, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "haskellPackages used to build gitit and plugins.", span: Span { start: Position { line: 41, column: 34, }, end: Position { line: 41, column: 82, }, }, }, ), ], span: Span { start: Position { line: 41, column: 33, }, end: Position { line: 41, column: 83, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 37, column: 34, }, end: Position { line: 42, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraPackages", span: Span { start: Position { line: 44, column: 7, }, end: Position { line: 44, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 44, column: 23, }, end: Position { line: 44, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 45, column: 9, }, end: Position { line: 45, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 45, column: 16, }, end: Position { line: 45, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "functionTo", span: Span { start: Position { line: 45, column: 22, }, end: Position { line: 45, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 45, column: 34, }, end: Position { line: 45, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 45, column: 40, }, end: Position { line: 45, column: 46, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 45, column: 47, }, end: Position { line: 45, column: 52, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 45, column: 53, }, end: Position { line: 45, column: 60, }, }, }, ), ], default: None, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 46, column: 9, }, end: Position { line: 46, column: 16, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "self", }, ), body: List( List { elements: [], span: Span { start: Position { line: 46, column: 25, }, end: Position { line: 46, column: 27, }, }, }, ), span: Span { start: Position { line: 46, column: 19, }, end: Position { line: 46, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 47, column: 9, }, end: Position { line: 47, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 47, column: 19, }, end: Position { line: 47, column: 36, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "haskellPackages: [\n haskellPackages.wreq\n]\n", span: Span { start: Position { line: 48, column: 1, }, end: Position { line: 51, column: 9, }, }, }, ), ], span: Span { start: Position { line: 47, column: 37, }, end: Position { line: 51, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 52, column: 9, }, end: Position { line: 52, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 52, column: 23, }, end: Position { line: 52, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 52, column: 27, }, end: Position { line: 52, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Extra packages available to ghc when running gitit. The\nvalue must be a function which receives the attrset defined\nin {var}`haskellPackages` as the sole argument.\n", span: Span { start: Position { line: 53, column: 1, }, end: Position { line: 56, column: 9, }, }, }, ), ], span: Span { start: Position { line: 52, column: 33, }, end: Position { line: 56, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 44, column: 32, }, end: Position { line: 57, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "address", span: Span { start: Position { line: 59, column: 7, }, end: Position { line: 59, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 59, column: 17, }, end: Position { line: 59, column: 25, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 60, column: 9, }, end: Position { line: 60, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 60, column: 16, }, end: Position { line: 60, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 60, column: 22, }, end: Position { line: 60, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 61, column: 9, }, end: Position { line: 61, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "0.0.0.0", span: Span { start: Position { line: 61, column: 20, }, end: Position { line: 61, column: 27, }, }, }, ), ], span: Span { start: Position { line: 61, column: 19, }, end: Position { line: 61, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 62, column: 9, }, end: Position { line: 62, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 62, column: 23, }, end: Position { line: 62, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 62, column: 27, }, end: Position { line: 62, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "IP address on which the web server will listen.", span: Span { start: Position { line: 62, column: 34, }, end: Position { line: 62, column: 81, }, }, }, ), ], span: Span { start: Position { line: 62, column: 33, }, end: Position { line: 62, column: 82, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 59, column: 26, }, end: Position { line: 63, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "port", span: Span { start: Position { line: 65, column: 7, }, end: Position { line: 65, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 65, column: 14, }, end: Position { line: 65, column: 22, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 66, column: 9, }, end: Position { line: 66, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 66, column: 16, }, end: Position { line: 66, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 66, column: 22, }, end: Position { line: 66, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 67, column: 9, }, end: Position { line: 67, column: 16, }, }, }, ), ], to: Integer( Integer { value: "5001", span: Span { start: Position { line: 67, column: 19, }, end: Position { line: 67, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 68, column: 9, }, end: Position { line: 68, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 68, column: 23, }, end: Position { line: 68, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 68, column: 27, }, end: Position { line: 68, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Port on which the web server will run.", span: Span { start: Position { line: 68, column: 34, }, end: Position { line: 68, column: 72, }, }, }, ), ], span: Span { start: Position { line: 68, column: 33, }, end: Position { line: 68, column: 73, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 65, column: 23, }, end: Position { line: 69, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wikiTitle", span: Span { start: Position { line: 71, column: 7, }, end: Position { line: 71, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 71, column: 19, }, end: Position { line: 71, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 72, column: 9, }, end: Position { line: 72, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 72, column: 16, }, end: Position { line: 72, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 72, column: 22, }, end: Position { line: 72, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 73, column: 9, }, end: Position { line: 73, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Gitit!", span: Span { start: Position { line: 73, column: 20, }, end: Position { line: 73, column: 26, }, }, }, ), ], span: Span { start: Position { line: 73, column: 19, }, end: Position { line: 73, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 74, column: 9, }, end: Position { line: 74, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 74, column: 23, }, end: Position { line: 74, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 74, column: 27, }, end: Position { line: 74, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "The wiki title.", span: Span { start: Position { line: 74, column: 34, }, end: Position { line: 74, column: 49, }, }, }, ), ], span: Span { start: Position { line: 74, column: 33, }, end: Position { line: 74, column: 50, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 71, column: 28, }, end: Position { line: 75, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "repositoryType", span: Span { start: Position { line: 77, column: 7, }, end: Position { line: 77, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 77, column: 24, }, end: Position { line: 77, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 78, column: 9, }, end: Position { line: 78, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 78, column: 16, }, end: Position { line: 78, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enum", span: Span { start: Position { line: 78, column: 22, }, end: Position { line: 78, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "git", span: Span { start: Position { line: 78, column: 29, }, end: Position { line: 78, column: 32, }, }, }, ), ], span: Span { start: Position { line: 78, column: 28, }, end: Position { line: 78, column: 33, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "darcs", span: Span { start: Position { line: 78, column: 35, }, end: Position { line: 78, column: 40, }, }, }, ), ], span: Span { start: Position { line: 78, column: 34, }, end: Position { line: 78, column: 41, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "mercurial", span: Span { start: Position { line: 78, column: 43, }, end: Position { line: 78, column: 52, }, }, }, ), ], span: Span { start: Position { line: 78, column: 42, }, end: Position { line: 78, column: 53, }, }, }, ), ], span: Span { start: Position { line: 78, column: 27, }, end: Position { line: 78, column: 54, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 79, column: 9, }, end: Position { line: 79, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "git", span: Span { start: Position { line: 79, column: 20, }, end: Position { line: 79, column: 23, }, }, }, ), ], span: Span { start: Position { line: 79, column: 19, }, end: Position { line: 79, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 80, column: 9, }, end: Position { line: 80, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 80, column: 23, }, end: Position { line: 80, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 80, column: 27, }, end: Position { line: 80, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Specifies the type of repository used for wiki content.", span: Span { start: Position { line: 80, column: 34, }, end: Position { line: 80, column: 89, }, }, }, ), ], span: Span { start: Position { line: 80, column: 33, }, end: Position { line: 80, column: 90, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 77, column: 33, }, end: Position { line: 81, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "repositoryPath", span: Span { start: Position { line: 83, column: 7, }, end: Position { line: 83, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 83, column: 24, }, end: Position { line: 83, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 84, column: 9, }, end: Position { line: 84, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 84, column: 16, }, end: Position { line: 84, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 84, column: 22, }, end: Position { line: 84, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 85, column: 9, }, end: Position { line: 85, column: 16, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "homeDir", span: Span { start: Position { line: 85, column: 19, }, end: Position { line: 85, column: 26, }, }, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/wiki", span: Span { start: Position { line: 85, column: 30, }, end: Position { line: 85, column: 35, }, }, }, ), ], span: Span { start: Position { line: 85, column: 29, }, end: Position { line: 85, column: 36, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 86, column: 9, }, end: Position { line: 86, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 86, column: 23, }, end: Position { line: 86, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 86, column: 27, }, end: Position { line: 86, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies the path of the repository directory. If it does not\nexist, gitit will create it on startup.\n", span: Span { start: Position { line: 87, column: 1, }, end: Position { line: 89, column: 9, }, }, }, ), ], span: Span { start: Position { line: 86, column: 33, }, end: Position { line: 89, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 83, column: 33, }, end: Position { line: 90, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "requireAuthentication", span: Span { start: Position { line: 92, column: 7, }, end: Position { line: 92, column: 28, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 92, column: 31, }, end: Position { line: 92, column: 39, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 93, column: 9, }, end: Position { line: 93, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 93, column: 16, }, end: Position { line: 93, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enum", span: Span { start: Position { line: 93, column: 22, }, end: Position { line: 93, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "none", span: Span { start: Position { line: 93, column: 30, }, end: Position { line: 93, column: 34, }, }, }, ), ], span: Span { start: Position { line: 93, column: 29, }, end: Position { line: 93, column: 35, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "modify", span: Span { start: Position { line: 93, column: 37, }, end: Position { line: 93, column: 43, }, }, }, ), ], span: Span { start: Position { line: 93, column: 36, }, end: Position { line: 93, column: 44, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "read", span: Span { start: Position { line: 93, column: 46, }, end: Position { line: 93, column: 50, }, }, }, ), ], span: Span { start: Position { line: 93, column: 45, }, end: Position { line: 93, column: 51, }, }, }, ), ], span: Span { start: Position { line: 93, column: 27, }, end: Position { line: 93, column: 53, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 94, column: 9, }, end: Position { line: 94, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "modify", span: Span { start: Position { line: 94, column: 20, }, end: Position { line: 94, column: 26, }, }, }, ), ], span: Span { start: Position { line: 94, column: 19, }, end: Position { line: 94, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 95, column: 9, }, end: Position { line: 95, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 95, column: 23, }, end: Position { line: 95, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 95, column: 27, }, end: Position { line: 95, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "If 'none', login is never required, and pages can be edited\nanonymously. If 'modify', login is required to modify the wiki\n(edit, add, delete pages, upload files). If 'read', login is\nrequired to see any wiki pages.\n", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 100, column: 9, }, }, }, ), ], span: Span { start: Position { line: 95, column: 33, }, end: Position { line: 100, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 92, column: 40, }, end: Position { line: 101, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "authenticationMethod", span: Span { start: Position { line: 103, column: 7, }, end: Position { line: 103, column: 27, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 103, column: 30, }, end: Position { line: 103, column: 38, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 104, column: 9, }, end: Position { line: 104, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 104, column: 16, }, end: Position { line: 104, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enum", span: Span { start: Position { line: 104, column: 22, }, end: Position { line: 104, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "form", span: Span { start: Position { line: 104, column: 30, }, end: Position { line: 104, column: 34, }, }, }, ), ], span: Span { start: Position { line: 104, column: 29, }, end: Position { line: 104, column: 35, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "http", span: Span { start: Position { line: 104, column: 37, }, end: Position { line: 104, column: 41, }, }, }, ), ], span: Span { start: Position { line: 104, column: 36, }, end: Position { line: 104, column: 42, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "generic", span: Span { start: Position { line: 104, column: 44, }, end: Position { line: 104, column: 51, }, }, }, ), ], span: Span { start: Position { line: 104, column: 43, }, end: Position { line: 104, column: 52, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "github", span: Span { start: Position { line: 104, column: 54, }, end: Position { line: 104, column: 60, }, }, }, ), ], span: Span { start: Position { line: 104, column: 53, }, end: Position { line: 104, column: 61, }, }, }, ), ], span: Span { start: Position { line: 104, column: 27, }, end: Position { line: 104, column: 63, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 105, column: 9, }, end: Position { line: 105, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "form", span: Span { start: Position { line: 105, column: 20, }, end: Position { line: 105, column: 24, }, }, }, ), ], span: Span { start: Position { line: 105, column: 19, }, end: Position { line: 105, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 106, column: 9, }, end: Position { line: 106, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 106, column: 23, }, end: Position { line: 106, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 106, column: 27, }, end: Position { line: 106, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "'form' means that users will be logged in and registered using forms\nin the gitit web interface. 'http' means that gitit will assume that\nHTTP authentication is in place and take the logged in username from\nthe \"Authorization\" field of the HTTP request header (in addition,\nthe login/logout and registration links will be suppressed).\n'generic' means that gitit will assume that some form of\nauthentication is in place that directly sets REMOTE_USER to the name\nof the authenticated user (e.g. mod_auth_cas on apache). 'rpx' means\nthat gitit will attempt to log in through https://rpxnow.com. This\nrequires that 'rpx-domain', 'rpx-key', and 'base-url' be set below,\nand that 'curl' be in the system path.\n", span: Span { start: Position { line: 107, column: 1, }, end: Position { line: 118, column: 9, }, }, }, ), ], span: Span { start: Position { line: 106, column: 33, }, end: Position { line: 118, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 103, column: 39, }, end: Position { line: 119, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "userFile", span: Span { start: Position { line: 121, column: 7, }, end: Position { line: 121, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 121, column: 18, }, end: Position { line: 121, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 122, column: 9, }, end: Position { line: 122, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 122, column: 16, }, end: Position { line: 122, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 122, column: 22, }, end: Position { line: 122, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 123, column: 9, }, end: Position { line: 123, column: 16, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "homeDir", span: Span { start: Position { line: 123, column: 19, }, end: Position { line: 123, column: 26, }, }, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/gitit-users", span: Span { start: Position { line: 123, column: 30, }, end: Position { line: 123, column: 42, }, }, }, ), ], span: Span { start: Position { line: 123, column: 29, }, end: Position { line: 123, column: 43, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 124, column: 9, }, end: Position { line: 124, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 124, column: 23, }, end: Position { line: 124, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 124, column: 27, }, end: Position { line: 124, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies the path of the file containing user login information. If\nit does not exist, gitit will create it (with an empty user list).\nThis file is not used if 'http' is selected for\nauthentication-method.\n", span: Span { start: Position { line: 125, column: 1, }, end: Position { line: 129, column: 9, }, }, }, ), ], span: Span { start: Position { line: 124, column: 33, }, end: Position { line: 129, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 121, column: 27, }, end: Position { line: 130, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sessionTimeout", span: Span { start: Position { line: 132, column: 7, }, end: Position { line: 132, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 132, column: 24, }, end: Position { line: 132, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 133, column: 9, }, end: Position { line: 133, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 133, column: 16, }, end: Position { line: 133, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 133, column: 22, }, end: Position { line: 133, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 134, column: 9, }, end: Position { line: 134, column: 16, }, }, }, ), ], to: Integer( Integer { value: "60", span: Span { start: Position { line: 134, column: 19, }, end: Position { line: 134, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 135, column: 9, }, end: Position { line: 135, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 135, column: 23, }, end: Position { line: 135, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 135, column: 27, }, end: Position { line: 135, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Number of minutes of inactivity before a session expires.\n", span: Span { start: Position { line: 136, column: 1, }, end: Position { line: 137, column: 9, }, }, }, ), ], span: Span { start: Position { line: 135, column: 33, }, end: Position { line: 137, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 132, column: 33, }, end: Position { line: 138, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "staticDir", span: Span { start: Position { line: 140, column: 7, }, end: Position { line: 140, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 140, column: 19, }, end: Position { line: 140, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 141, column: 9, }, end: Position { line: 141, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 141, column: 16, }, end: Position { line: 141, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 141, column: 22, }, end: Position { line: 141, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 142, column: 9, }, end: Position { line: 142, column: 16, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "gititShared", span: Span { start: Position { line: 142, column: 19, }, end: Position { line: 142, column: 30, }, }, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/data/static", span: Span { start: Position { line: 142, column: 34, }, end: Position { line: 142, column: 46, }, }, }, ), ], span: Span { start: Position { line: 142, column: 33, }, end: Position { line: 142, column: 47, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 143, column: 9, }, end: Position { line: 143, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 143, column: 23, }, end: Position { line: 143, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 143, column: 27, }, end: Position { line: 143, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies the path of the static directory (containing javascript,\ncss, and images). If it does not exist, gitit will create it and\npopulate it with required scripts, stylesheets, and images.\n", span: Span { start: Position { line: 144, column: 1, }, end: Position { line: 147, column: 9, }, }, }, ), ], span: Span { start: Position { line: 143, column: 33, }, end: Position { line: 147, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 140, column: 28, }, end: Position { line: 148, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultPageType", span: Span { start: Position { line: 150, column: 7, }, end: Position { line: 150, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 150, column: 25, }, end: Position { line: 150, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 151, column: 9, }, end: Position { line: 151, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 151, column: 16, }, end: Position { line: 151, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enum", span: Span { start: Position { line: 151, column: 22, }, end: Position { line: 151, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "markdown", span: Span { start: Position { line: 151, column: 30, }, end: Position { line: 151, column: 38, }, }, }, ), ], span: Span { start: Position { line: 151, column: 29, }, end: Position { line: 151, column: 39, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "rst", span: Span { start: Position { line: 151, column: 41, }, end: Position { line: 151, column: 44, }, }, }, ), ], span: Span { start: Position { line: 151, column: 40, }, end: Position { line: 151, column: 45, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "latex", span: Span { start: Position { line: 151, column: 47, }, end: Position { line: 151, column: 52, }, }, }, ), ], span: Span { start: Position { line: 151, column: 46, }, end: Position { line: 151, column: 53, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "html", span: Span { start: Position { line: 151, column: 55, }, end: Position { line: 151, column: 59, }, }, }, ), ], span: Span { start: Position { line: 151, column: 54, }, end: Position { line: 151, column: 60, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "markdown+lhs", span: Span { start: Position { line: 151, column: 62, }, end: Position { line: 151, column: 74, }, }, }, ), ], span: Span { start: Position { line: 151, column: 61, }, end: Position { line: 151, column: 75, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "rst+lhs", span: Span { start: Position { line: 151, column: 77, }, end: Position { line: 151, column: 84, }, }, }, ), ], span: Span { start: Position { line: 151, column: 76, }, end: Position { line: 151, column: 85, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "latex+lhs", span: Span { start: Position { line: 151, column: 87, }, end: Position { line: 151, column: 96, }, }, }, ), ], span: Span { start: Position { line: 151, column: 86, }, end: Position { line: 151, column: 97, }, }, }, ), ], span: Span { start: Position { line: 151, column: 27, }, end: Position { line: 151, column: 99, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 152, column: 9, }, end: Position { line: 152, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "markdown", span: Span { start: Position { line: 152, column: 20, }, end: Position { line: 152, column: 28, }, }, }, ), ], span: Span { start: Position { line: 152, column: 19, }, end: Position { line: 152, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 153, column: 9, }, end: Position { line: 153, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 153, column: 23, }, end: Position { line: 153, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 153, column: 27, }, end: Position { line: 153, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies the type of markup used to interpret pages in the wiki.\nPossible values are markdown, rst, latex, html, markdown+lhs,\nrst+lhs, and latex+lhs. (the +lhs variants treat the input as\nliterate Haskell. See pandoc's documentation for more details.) If\nMarkdown is selected, pandoc's syntax extensions (for footnotes,\ndelimited code blocks, etc.) will be enabled. Note that pandoc's\nrestructuredtext parser is not complete, so some pages may not be\nrendered correctly if rst is selected. The same goes for latex and\nhtml.\n", span: Span { start: Position { line: 154, column: 1, }, end: Position { line: 163, column: 9, }, }, }, ), ], span: Span { start: Position { line: 153, column: 33, }, end: Position { line: 163, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 150, column: 34, }, end: Position { line: 164, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "math", span: Span { start: Position { line: 166, column: 7, }, end: Position { line: 166, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 166, column: 14, }, end: Position { line: 166, column: 22, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 167, column: 9, }, end: Position { line: 167, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 167, column: 16, }, end: Position { line: 167, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enum", span: Span { start: Position { line: 167, column: 22, }, end: Position { line: 167, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "mathml", span: Span { start: Position { line: 167, column: 30, }, end: Position { line: 167, column: 36, }, }, }, ), ], span: Span { start: Position { line: 167, column: 29, }, end: Position { line: 167, column: 37, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "raw", span: Span { start: Position { line: 167, column: 39, }, end: Position { line: 167, column: 42, }, }, }, ), ], span: Span { start: Position { line: 167, column: 38, }, end: Position { line: 167, column: 43, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "mathjax", span: Span { start: Position { line: 167, column: 45, }, end: Position { line: 167, column: 52, }, }, }, ), ], span: Span { start: Position { line: 167, column: 44, }, end: Position { line: 167, column: 53, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "jsmath", span: Span { start: Position { line: 167, column: 55, }, end: Position { line: 167, column: 61, }, }, }, ), ], span: Span { start: Position { line: 167, column: 54, }, end: Position { line: 167, column: 62, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "google", span: Span { start: Position { line: 167, column: 64, }, end: Position { line: 167, column: 70, }, }, }, ), ], span: Span { start: Position { line: 167, column: 63, }, end: Position { line: 167, column: 71, }, }, }, ), ], span: Span { start: Position { line: 167, column: 27, }, end: Position { line: 167, column: 73, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 168, column: 9, }, end: Position { line: 168, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "mathml", span: Span { start: Position { line: 168, column: 20, }, end: Position { line: 168, column: 26, }, }, }, ), ], span: Span { start: Position { line: 168, column: 19, }, end: Position { line: 168, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 169, column: 9, }, end: Position { line: 169, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 169, column: 23, }, end: Position { line: 169, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 169, column: 27, }, end: Position { line: 169, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies how LaTeX math is to be displayed. Possible values are\nmathml, raw, mathjax, jsmath, and google. If mathml is selected,\ngitit will convert LaTeX math to MathML and link in a script,\nMathMLinHTML.js, that allows the MathML to be seen in Gecko browsers,\nIE + mathplayer, and Opera. In other browsers you may get a jumble of\ncharacters. If raw is selected, the LaTeX math will be displayed as\nraw LaTeX math. If mathjax is selected, gitit will link to the\nremote mathjax script. If jsMath is selected, gitit will link to the\nscript /js/jsMath/easy/load.js, and will assume that jsMath has been\ninstalled into the js/jsMath directory. This is the most portable\nsolution. If google is selected, the google chart API is called to\nrender the formula as an image. This requires a connection to google,\nand might raise a technical or a privacy problem.\n", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 183, column: 9, }, }, }, ), ], span: Span { start: Position { line: 169, column: 33, }, end: Position { line: 183, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 166, column: 23, }, end: Position { line: 184, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mathJaxScript", span: Span { start: Position { line: 186, column: 7, }, end: Position { line: 186, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 186, column: 23, }, end: Position { line: 186, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 187, column: 9, }, end: Position { line: 187, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 187, column: 16, }, end: Position { line: 187, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 187, column: 22, }, end: Position { line: 187, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 188, column: 9, }, end: Position { line: 188, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "https://d3eoax9i5htok0.cloudfront.net/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML", span: Span { start: Position { line: 188, column: 20, }, end: Position { line: 188, column: 112, }, }, }, ), ], span: Span { start: Position { line: 188, column: 19, }, end: Position { line: 188, column: 113, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 189, column: 9, }, end: Position { line: 189, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 189, column: 23, }, end: Position { line: 189, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 189, column: 27, }, end: Position { line: 189, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies the path to MathJax rendering script. You might want to\nuse your own MathJax script to render formulas without Internet\nconnection or if you want to use some special LaTeX packages. Note:\npath specified there cannot be an absolute path to a script on your\nhdd, instead you should run your (local if you wish) HTTP server\nwhich will serve the MathJax.js script. You can easily (in four lines\nof code) serve MathJax.js using\nhttp://happstack.com/docs/crashcourse/FileServing.html Do not forget\nthe \"http://\" prefix (e.g. http://localhost:1234/MathJax.js).\n", span: Span { start: Position { line: 190, column: 1, }, end: Position { line: 199, column: 9, }, }, }, ), ], span: Span { start: Position { line: 189, column: 33, }, end: Position { line: 199, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 186, column: 32, }, end: Position { line: 200, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "showLhsBirdTracks", span: Span { start: Position { line: 202, column: 7, }, end: Position { line: 202, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 202, column: 27, }, end: Position { line: 202, column: 35, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 203, column: 9, }, end: Position { line: 203, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 203, column: 16, }, end: Position { line: 203, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 203, column: 22, }, end: Position { line: 203, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 204, column: 9, }, end: Position { line: 204, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 204, column: 19, }, end: Position { line: 204, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 205, column: 9, }, end: Position { line: 205, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 205, column: 23, }, end: Position { line: 205, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 205, column: 27, }, end: Position { line: 205, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies whether to show Haskell code blocks in \"bird style\", with\n\"> \" at the beginning of each line.\n", span: Span { start: Position { line: 206, column: 1, }, end: Position { line: 208, column: 9, }, }, }, ), ], span: Span { start: Position { line: 205, column: 33, }, end: Position { line: 208, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 202, column: 36, }, end: Position { line: 209, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "templatesDir", span: Span { start: Position { line: 211, column: 7, }, end: Position { line: 211, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 211, column: 22, }, end: Position { line: 211, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 212, column: 9, }, end: Position { line: 212, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 212, column: 16, }, end: Position { line: 212, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 212, column: 22, }, end: Position { line: 212, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 213, column: 9, }, end: Position { line: 213, column: 16, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "gititShared", span: Span { start: Position { line: 213, column: 19, }, end: Position { line: 213, column: 30, }, }, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/data/templates", span: Span { start: Position { line: 213, column: 34, }, end: Position { line: 213, column: 49, }, }, }, ), ], span: Span { start: Position { line: 213, column: 33, }, end: Position { line: 213, column: 50, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 214, column: 9, }, end: Position { line: 214, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 214, column: 23, }, end: Position { line: 214, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 214, column: 27, }, end: Position { line: 214, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies the path of the directory containing page templates. If it\ndoes not exist, gitit will create it with default templates. Users\nmay wish to edit the templates to customize the appearance of their\nwiki. The template files are HStringTemplate templates. Variables to\nbe interpolated appear between $\\'s. Literal $\\'s must be\nbackslash-escaped.\n", span: Span { start: Position { line: 215, column: 1, }, end: Position { line: 221, column: 9, }, }, }, ), ], span: Span { start: Position { line: 214, column: 33, }, end: Position { line: 221, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 211, column: 31, }, end: Position { line: 222, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "logFile", span: Span { start: Position { line: 224, column: 7, }, end: Position { line: 224, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 224, column: 17, }, end: Position { line: 224, column: 25, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 225, column: 9, }, end: Position { line: 225, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 225, column: 16, }, end: Position { line: 225, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 225, column: 22, }, end: Position { line: 225, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 226, column: 9, }, end: Position { line: 226, column: 16, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "homeDir", span: Span { start: Position { line: 226, column: 19, }, end: Position { line: 226, column: 26, }, }, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/gitit.log", span: Span { start: Position { line: 226, column: 30, }, end: Position { line: 226, column: 40, }, }, }, ), ], span: Span { start: Position { line: 226, column: 29, }, end: Position { line: 226, column: 41, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 227, column: 9, }, end: Position { line: 227, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 227, column: 23, }, end: Position { line: 227, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 227, column: 27, }, end: Position { line: 227, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies the path of gitit's log file. If it does not exist, gitit\nwill create it. The log is in Apache combined log format.\n", span: Span { start: Position { line: 228, column: 1, }, end: Position { line: 230, column: 9, }, }, }, ), ], span: Span { start: Position { line: 227, column: 33, }, end: Position { line: 230, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 224, column: 26, }, end: Position { line: 231, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "logLevel", span: Span { start: Position { line: 233, column: 7, }, end: Position { line: 233, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 233, column: 18, }, end: Position { line: 233, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 234, column: 9, }, end: Position { line: 234, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 234, column: 16, }, end: Position { line: 234, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enum", span: Span { start: Position { line: 234, column: 22, }, end: Position { line: 234, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "DEBUG", span: Span { start: Position { line: 234, column: 30, }, end: Position { line: 234, column: 35, }, }, }, ), ], span: Span { start: Position { line: 234, column: 29, }, end: Position { line: 234, column: 36, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "INFO", span: Span { start: Position { line: 234, column: 38, }, end: Position { line: 234, column: 42, }, }, }, ), ], span: Span { start: Position { line: 234, column: 37, }, end: Position { line: 234, column: 43, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "NOTICE", span: Span { start: Position { line: 234, column: 45, }, end: Position { line: 234, column: 51, }, }, }, ), ], span: Span { start: Position { line: 234, column: 44, }, end: Position { line: 234, column: 52, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "WARNING", span: Span { start: Position { line: 234, column: 54, }, end: Position { line: 234, column: 61, }, }, }, ), ], span: Span { start: Position { line: 234, column: 53, }, end: Position { line: 234, column: 62, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "ERROR", span: Span { start: Position { line: 234, column: 64, }, end: Position { line: 234, column: 69, }, }, }, ), ], span: Span { start: Position { line: 234, column: 63, }, end: Position { line: 234, column: 70, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "CRITICAL", span: Span { start: Position { line: 234, column: 72, }, end: Position { line: 234, column: 80, }, }, }, ), ], span: Span { start: Position { line: 234, column: 71, }, end: Position { line: 234, column: 81, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "ALERT", span: Span { start: Position { line: 234, column: 83, }, end: Position { line: 234, column: 88, }, }, }, ), ], span: Span { start: Position { line: 234, column: 82, }, end: Position { line: 234, column: 89, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "EMERGENCY", span: Span { start: Position { line: 234, column: 91, }, end: Position { line: 234, column: 100, }, }, }, ), ], span: Span { start: Position { line: 234, column: 90, }, end: Position { line: 234, column: 101, }, }, }, ), ], span: Span { start: Position { line: 234, column: 27, }, end: Position { line: 234, column: 103, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 235, column: 9, }, end: Position { line: 235, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "ERROR", span: Span { start: Position { line: 235, column: 20, }, end: Position { line: 235, column: 25, }, }, }, ), ], span: Span { start: Position { line: 235, column: 19, }, end: Position { line: 235, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 236, column: 9, }, end: Position { line: 236, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 236, column: 23, }, end: Position { line: 236, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 236, column: 27, }, end: Position { line: 236, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Determines how much information is logged. Possible values (from\nmost to least verbose) are DEBUG, INFO, NOTICE, WARNING, ERROR,\nCRITICAL, ALERT, EMERGENCY.\n", span: Span { start: Position { line: 237, column: 1, }, end: Position { line: 240, column: 9, }, }, }, ), ], span: Span { start: Position { line: 236, column: 33, }, end: Position { line: 240, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 233, column: 27, }, end: Position { line: 241, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "frontPage", span: Span { start: Position { line: 243, column: 7, }, end: Position { line: 243, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 243, column: 19, }, end: Position { line: 243, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 244, column: 9, }, end: Position { line: 244, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 244, column: 16, }, end: Position { line: 244, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 244, column: 22, }, end: Position { line: 244, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 245, column: 9, }, end: Position { line: 245, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Front Page", span: Span { start: Position { line: 245, column: 20, }, end: Position { line: 245, column: 30, }, }, }, ), ], span: Span { start: Position { line: 245, column: 19, }, end: Position { line: 245, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 246, column: 9, }, end: Position { line: 246, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 246, column: 23, }, end: Position { line: 246, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 246, column: 27, }, end: Position { line: 246, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies which wiki page is to be used as the wiki's front page.\nGitit creates a default front page on startup, if one does not exist\nalready.\n", span: Span { start: Position { line: 247, column: 1, }, end: Position { line: 250, column: 9, }, }, }, ), ], span: Span { start: Position { line: 246, column: 33, }, end: Position { line: 250, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 243, column: 28, }, end: Position { line: 251, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "noDelete", span: Span { start: Position { line: 253, column: 7, }, end: Position { line: 253, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 253, column: 18, }, end: Position { line: 253, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 254, column: 9, }, end: Position { line: 254, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 254, column: 16, }, end: Position { line: 254, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 254, column: 22, }, end: Position { line: 254, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 255, column: 9, }, end: Position { line: 255, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Front Page, Help", span: Span { start: Position { line: 255, column: 20, }, end: Position { line: 255, column: 36, }, }, }, ), ], span: Span { start: Position { line: 255, column: 19, }, end: Position { line: 255, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 256, column: 9, }, end: Position { line: 256, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 256, column: 23, }, end: Position { line: 256, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 256, column: 27, }, end: Position { line: 256, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies pages that cannot be deleted through the web interface.\n(They can still be deleted directly using git or darcs.) A\ncomma-separated list of page names. Leave blank to allow every page\nto be deleted.\n", span: Span { start: Position { line: 257, column: 1, }, end: Position { line: 261, column: 9, }, }, }, ), ], span: Span { start: Position { line: 256, column: 33, }, end: Position { line: 261, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 253, column: 27, }, end: Position { line: 262, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "noEdit", span: Span { start: Position { line: 264, column: 7, }, end: Position { line: 264, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 264, column: 16, }, end: Position { line: 264, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 265, column: 9, }, end: Position { line: 265, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 265, column: 16, }, end: Position { line: 265, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 265, column: 22, }, end: Position { line: 265, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 266, column: 9, }, end: Position { line: 266, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Help", span: Span { start: Position { line: 266, column: 20, }, end: Position { line: 266, column: 24, }, }, }, ), ], span: Span { start: Position { line: 266, column: 19, }, end: Position { line: 266, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 267, column: 9, }, end: Position { line: 267, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 267, column: 23, }, end: Position { line: 267, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 267, column: 27, }, end: Position { line: 267, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies pages that cannot be edited through the web interface.\nLeave blank to allow every page to be edited.\n", span: Span { start: Position { line: 268, column: 1, }, end: Position { line: 270, column: 9, }, }, }, ), ], span: Span { start: Position { line: 267, column: 33, }, end: Position { line: 270, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 264, column: 25, }, end: Position { line: 271, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultSummary", span: Span { start: Position { line: 273, column: 7, }, end: Position { line: 273, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 273, column: 24, }, end: Position { line: 273, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 274, column: 9, }, end: Position { line: 274, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 274, column: 16, }, end: Position { line: 274, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 274, column: 22, }, end: Position { line: 274, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 275, column: 9, }, end: Position { line: 275, column: 16, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 275, column: 19, }, end: Position { line: 275, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 276, column: 9, }, end: Position { line: 276, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 276, column: 23, }, end: Position { line: 276, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 276, column: 27, }, end: Position { line: 276, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies text to be used in the change description if the author\nleaves the \"description\" field blank. If default-summary is blank\n(the default), the author will be required to fill in the description\nfield.\n", span: Span { start: Position { line: 277, column: 1, }, end: Position { line: 281, column: 9, }, }, }, ), ], span: Span { start: Position { line: 276, column: 33, }, end: Position { line: 281, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 273, column: 33, }, end: Position { line: 282, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "tableOfContents", span: Span { start: Position { line: 284, column: 7, }, end: Position { line: 284, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 284, column: 25, }, end: Position { line: 284, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 285, column: 9, }, end: Position { line: 285, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 285, column: 16, }, end: Position { line: 285, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 285, column: 22, }, end: Position { line: 285, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 286, column: 9, }, end: Position { line: 286, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 286, column: 19, }, end: Position { line: 286, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 287, column: 9, }, end: Position { line: 287, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 287, column: 23, }, end: Position { line: 287, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 287, column: 27, }, end: Position { line: 287, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies whether to print a tables of contents (with links to\nsections) on each wiki page.\n", span: Span { start: Position { line: 288, column: 1, }, end: Position { line: 290, column: 9, }, }, }, ), ], span: Span { start: Position { line: 287, column: 33, }, end: Position { line: 290, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 284, column: 34, }, end: Position { line: 291, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "plugins", span: Span { start: Position { line: 293, column: 7, }, end: Position { line: 293, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 293, column: 17, }, end: Position { line: 293, column: 25, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 294, column: 9, }, end: Position { line: 294, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 294, column: 21, }, end: Position { line: 294, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "listOf", span: Span { start: Position { line: 294, column: 28, }, end: Position { line: 294, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 294, column: 35, }, end: Position { line: 294, column: 38, }, }, }, ), ], }, ), span: Span { start: Position { line: 294, column: 16, }, end: Position { line: 294, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 295, column: 9, }, end: Position { line: 295, column: 16, }, }, }, ), ], to: List( List { elements: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "gititShared", span: Span { start: Position { line: 295, column: 22, }, end: Position { line: 295, column: 33, }, }, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/plugins/Dot.hs", span: Span { start: Position { line: 295, column: 37, }, end: Position { line: 295, column: 52, }, }, }, ), ], span: Span { start: Position { line: 295, column: 36, }, end: Position { line: 295, column: 53, }, }, }, ), }, ), ], span: Span { start: Position { line: 295, column: 19, }, end: Position { line: 295, column: 56, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 296, column: 9, }, end: Position { line: 296, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 296, column: 23, }, end: Position { line: 296, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 296, column: 27, }, end: Position { line: 296, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies a list of plugins to load. Plugins may be specified either\nby their path or by their module name. If the plugin name starts\nwith Gitit.Plugin., gitit will assume that the plugin is an installed\nmodule and will not try to find a source file.\n", span: Span { start: Position { line: 297, column: 1, }, end: Position { line: 301, column: 9, }, }, }, ), ], span: Span { start: Position { line: 296, column: 33, }, end: Position { line: 301, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 293, column: 26, }, end: Position { line: 302, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "useCache", span: Span { start: Position { line: 304, column: 7, }, end: Position { line: 304, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 304, column: 18, }, end: Position { line: 304, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 305, column: 9, }, end: Position { line: 305, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 305, column: 16, }, end: Position { line: 305, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 305, column: 22, }, end: Position { line: 305, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 306, column: 9, }, end: Position { line: 306, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 306, column: 19, }, end: Position { line: 306, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 307, column: 9, }, end: Position { line: 307, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 307, column: 23, }, end: Position { line: 307, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 307, column: 27, }, end: Position { line: 307, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies whether to cache rendered pages. Note that if use-feed is\nselected, feeds will be cached regardless of the value of use-cache.\n", span: Span { start: Position { line: 308, column: 1, }, end: Position { line: 310, column: 9, }, }, }, ), ], span: Span { start: Position { line: 307, column: 33, }, end: Position { line: 310, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 304, column: 27, }, end: Position { line: 311, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cacheDir", span: Span { start: Position { line: 313, column: 7, }, end: Position { line: 313, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 313, column: 18, }, end: Position { line: 313, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 314, column: 9, }, end: Position { line: 314, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 314, column: 16, }, end: Position { line: 314, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 314, column: 22, }, end: Position { line: 314, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 315, column: 9, }, end: Position { line: 315, column: 16, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "homeDir", span: Span { start: Position { line: 315, column: 19, }, end: Position { line: 315, column: 26, }, }, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/cache", span: Span { start: Position { line: 315, column: 30, }, end: Position { line: 315, column: 36, }, }, }, ), ], span: Span { start: Position { line: 315, column: 29, }, end: Position { line: 315, column: 37, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 316, column: 9, }, end: Position { line: 316, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 316, column: 23, }, end: Position { line: 316, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 316, column: 27, }, end: Position { line: 316, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Path where rendered pages will be cached.", span: Span { start: Position { line: 316, column: 34, }, end: Position { line: 316, column: 75, }, }, }, ), ], span: Span { start: Position { line: 316, column: 33, }, end: Position { line: 316, column: 76, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 313, column: 27, }, end: Position { line: 317, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "maxUploadSize", span: Span { start: Position { line: 319, column: 7, }, end: Position { line: 319, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 319, column: 23, }, end: Position { line: 319, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 320, column: 9, }, end: Position { line: 320, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 320, column: 16, }, end: Position { line: 320, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 320, column: 22, }, end: Position { line: 320, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 321, column: 9, }, end: Position { line: 321, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "1000K", span: Span { start: Position { line: 321, column: 20, }, end: Position { line: 321, column: 25, }, }, }, ), ], span: Span { start: Position { line: 321, column: 19, }, end: Position { line: 321, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 322, column: 9, }, end: Position { line: 322, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 322, column: 23, }, end: Position { line: 322, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 322, column: 27, }, end: Position { line: 322, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies an upper limit on the size (in bytes) of files uploaded\nthrough the wiki's web interface. To disable uploads, set this to\n0K. This will result in the uploads link disappearing and the\n_upload url becoming inactive.\n", span: Span { start: Position { line: 323, column: 1, }, end: Position { line: 327, column: 9, }, }, }, ), ], span: Span { start: Position { line: 322, column: 33, }, end: Position { line: 327, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 319, column: 32, }, end: Position { line: 328, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "maxPageSize", span: Span { start: Position { line: 330, column: 7, }, end: Position { line: 330, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 330, column: 21, }, end: Position { line: 330, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 331, column: 9, }, end: Position { line: 331, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 331, column: 16, }, end: Position { line: 331, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 331, column: 22, }, end: Position { line: 331, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 332, column: 9, }, end: Position { line: 332, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "1000K", span: Span { start: Position { line: 332, column: 20, }, end: Position { line: 332, column: 25, }, }, }, ), ], span: Span { start: Position { line: 332, column: 19, }, end: Position { line: 332, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 333, column: 9, }, end: Position { line: 333, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 333, column: 23, }, end: Position { line: 333, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 333, column: 27, }, end: Position { line: 333, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Specifies an upper limit on the size (in bytes) of pages.", span: Span { start: Position { line: 333, column: 34, }, end: Position { line: 333, column: 91, }, }, }, ), ], span: Span { start: Position { line: 333, column: 33, }, end: Position { line: 333, column: 92, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 330, column: 30, }, end: Position { line: 334, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "debugMode", span: Span { start: Position { line: 336, column: 7, }, end: Position { line: 336, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 336, column: 19, }, end: Position { line: 336, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 337, column: 9, }, end: Position { line: 337, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 337, column: 16, }, end: Position { line: 337, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 337, column: 22, }, end: Position { line: 337, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 338, column: 9, }, end: Position { line: 338, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 338, column: 19, }, end: Position { line: 338, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 339, column: 9, }, end: Position { line: 339, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 339, column: 23, }, end: Position { line: 339, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 339, column: 27, }, end: Position { line: 339, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Causes debug information to be logged while gitit is running.", span: Span { start: Position { line: 339, column: 34, }, end: Position { line: 339, column: 95, }, }, }, ), ], span: Span { start: Position { line: 339, column: 33, }, end: Position { line: 339, column: 96, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 336, column: 28, }, end: Position { line: 340, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "compressResponses", span: Span { start: Position { line: 342, column: 7, }, end: Position { line: 342, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 342, column: 27, }, end: Position { line: 342, column: 35, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 343, column: 9, }, end: Position { line: 343, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 343, column: 16, }, end: Position { line: 343, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 343, column: 22, }, end: Position { line: 343, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 344, column: 9, }, end: Position { line: 344, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 344, column: 19, }, end: Position { line: 344, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 345, column: 9, }, end: Position { line: 345, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 345, column: 23, }, end: Position { line: 345, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 345, column: 27, }, end: Position { line: 345, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Specifies whether HTTP responses should be compressed.", span: Span { start: Position { line: 345, column: 34, }, end: Position { line: 345, column: 88, }, }, }, ), ], span: Span { start: Position { line: 345, column: 33, }, end: Position { line: 345, column: 89, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 342, column: 36, }, end: Position { line: 346, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mimeTypesFile", span: Span { start: Position { line: 348, column: 7, }, end: Position { line: 348, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 348, column: 23, }, end: Position { line: 348, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 349, column: 9, }, end: Position { line: 349, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 349, column: 16, }, end: Position { line: 349, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 349, column: 22, }, end: Position { line: 349, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 350, column: 9, }, end: Position { line: 350, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/etc/mime/types.info", span: Span { start: Position { line: 350, column: 20, }, end: Position { line: 350, column: 40, }, }, }, ), ], span: Span { start: Position { line: 350, column: 19, }, end: Position { line: 350, column: 41, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 351, column: 9, }, end: Position { line: 351, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 351, column: 23, }, end: Position { line: 351, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 351, column: 27, }, end: Position { line: 351, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies the path of a file containing mime type mappings. Each\nline of the file should contain two fields, separated by whitespace.\nThe first field is the mime type, the second is a file extension.\nFor example:\n```\nvideo/x-ms-wmx wmx\n```\nIf the file is not found, some simple defaults will be used.\n", span: Span { start: Position { line: 352, column: 1, }, end: Position { line: 360, column: 9, }, }, }, ), ], span: Span { start: Position { line: 351, column: 33, }, end: Position { line: 360, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 348, column: 32, }, end: Position { line: 361, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "useReCaptcha", span: Span { start: Position { line: 363, column: 7, }, end: Position { line: 363, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 363, column: 22, }, end: Position { line: 363, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 364, column: 9, }, end: Position { line: 364, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 364, column: 16, }, end: Position { line: 364, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 364, column: 22, }, end: Position { line: 364, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 365, column: 9, }, end: Position { line: 365, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 365, column: 19, }, end: Position { line: 365, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 366, column: 9, }, end: Position { line: 366, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 366, column: 23, }, end: Position { line: 366, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 366, column: 27, }, end: Position { line: 366, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "If true, causes gitit to use the reCAPTCHA service\n(http://recaptcha.net) to prevent bots from creating accounts.\n", span: Span { start: Position { line: 367, column: 1, }, end: Position { line: 369, column: 9, }, }, }, ), ], span: Span { start: Position { line: 366, column: 33, }, end: Position { line: 369, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 363, column: 31, }, end: Position { line: 370, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "reCaptchaPrivateKey", span: Span { start: Position { line: 372, column: 7, }, end: Position { line: 372, column: 26, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 372, column: 29, }, end: Position { line: 372, column: 37, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 373, column: 9, }, end: Position { line: 373, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 373, column: 21, }, end: Position { line: 373, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 373, column: 28, }, end: Position { line: 373, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 373, column: 35, }, end: Position { line: 373, column: 38, }, }, }, ), ], }, ), span: Span { start: Position { line: 373, column: 16, }, end: Position { line: 373, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 374, column: 9, }, end: Position { line: 374, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 374, column: 19, }, end: Position { line: 374, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 375, column: 9, }, end: Position { line: 375, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 375, column: 23, }, end: Position { line: 375, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 375, column: 27, }, end: Position { line: 375, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies the private key for the reCAPTCHA service. To get\nthese, you need to create an account at http://recaptcha.net.\n", span: Span { start: Position { line: 376, column: 1, }, end: Position { line: 378, column: 9, }, }, }, ), ], span: Span { start: Position { line: 375, column: 33, }, end: Position { line: 378, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 372, column: 38, }, end: Position { line: 379, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "reCaptchaPublicKey", span: Span { start: Position { line: 381, column: 7, }, end: Position { line: 381, column: 25, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 381, column: 28, }, end: Position { line: 381, column: 36, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 382, column: 9, }, end: Position { line: 382, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 382, column: 21, }, end: Position { line: 382, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 382, column: 28, }, end: Position { line: 382, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 382, column: 35, }, end: Position { line: 382, column: 38, }, }, }, ), ], }, ), span: Span { start: Position { line: 382, column: 16, }, end: Position { line: 382, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 383, column: 9, }, end: Position { line: 383, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 383, column: 19, }, end: Position { line: 383, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 384, column: 9, }, end: Position { line: 384, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 384, column: 23, }, end: Position { line: 384, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 384, column: 27, }, end: Position { line: 384, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies the public key for the reCAPTCHA service. To get\nthese, you need to create an account at http://recaptcha.net.\n", span: Span { start: Position { line: 385, column: 1, }, end: Position { line: 387, column: 9, }, }, }, ), ], span: Span { start: Position { line: 384, column: 33, }, end: Position { line: 387, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 381, column: 37, }, end: Position { line: 388, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "accessQuestion", span: Span { start: Position { line: 390, column: 7, }, end: Position { line: 390, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 390, column: 24, }, end: Position { line: 390, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 391, column: 9, }, end: Position { line: 391, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 391, column: 16, }, end: Position { line: 391, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 391, column: 22, }, end: Position { line: 391, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 392, column: 9, }, end: Position { line: 392, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "What is the code given to you by Ms. X?", span: Span { start: Position { line: 392, column: 20, }, end: Position { line: 392, column: 59, }, }, }, ), ], span: Span { start: Position { line: 392, column: 19, }, end: Position { line: 392, column: 60, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 393, column: 9, }, end: Position { line: 393, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 393, column: 23, }, end: Position { line: 393, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 393, column: 27, }, end: Position { line: 393, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies a question that users must answer when they attempt to\ncreate an account\n", span: Span { start: Position { line: 394, column: 1, }, end: Position { line: 396, column: 9, }, }, }, ), ], span: Span { start: Position { line: 393, column: 33, }, end: Position { line: 396, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 390, column: 33, }, end: Position { line: 397, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "accessQuestionAnswers", span: Span { start: Position { line: 399, column: 7, }, end: Position { line: 399, column: 28, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 399, column: 31, }, end: Position { line: 399, column: 39, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 400, column: 9, }, end: Position { line: 400, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 400, column: 16, }, end: Position { line: 400, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 400, column: 22, }, end: Position { line: 400, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 401, column: 9, }, end: Position { line: 401, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "RED DOG, red dog", span: Span { start: Position { line: 401, column: 20, }, end: Position { line: 401, column: 36, }, }, }, ), ], span: Span { start: Position { line: 401, column: 19, }, end: Position { line: 401, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 402, column: 9, }, end: Position { line: 402, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 402, column: 23, }, end: Position { line: 402, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 402, column: 27, }, end: Position { line: 402, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies a question that users must answer when they attempt to\ncreate an account, along with a comma-separated list of acceptable\nanswers. This can be used to institute a rudimentary password for\nsigning up as a user on the wiki, or as an alternative to reCAPTCHA.\nExample:\naccess-question: What is the code given to you by Ms. X?\naccess-question-answers: RED DOG, red dog\n", span: Span { start: Position { line: 403, column: 1, }, end: Position { line: 410, column: 9, }, }, }, ), ], span: Span { start: Position { line: 402, column: 33, }, end: Position { line: 410, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 399, column: 40, }, end: Position { line: 411, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "rpxDomain", span: Span { start: Position { line: 413, column: 7, }, end: Position { line: 413, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 413, column: 19, }, end: Position { line: 413, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 414, column: 9, }, end: Position { line: 414, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 414, column: 21, }, end: Position { line: 414, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 414, column: 28, }, end: Position { line: 414, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 414, column: 35, }, end: Position { line: 414, column: 38, }, }, }, ), ], }, ), span: Span { start: Position { line: 414, column: 16, }, end: Position { line: 414, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 415, column: 9, }, end: Position { line: 415, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 415, column: 19, }, end: Position { line: 415, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 416, column: 9, }, end: Position { line: 416, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 416, column: 23, }, end: Position { line: 416, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 416, column: 27, }, end: Position { line: 416, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies the domain and key of your RPX account. The domain is just\nthe prefix of the complete RPX domain, so if your full domain is\n'https://foo.rpxnow.com/', use 'foo' as the value of rpx-domain.\n", span: Span { start: Position { line: 417, column: 1, }, end: Position { line: 420, column: 9, }, }, }, ), ], span: Span { start: Position { line: 416, column: 33, }, end: Position { line: 420, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 413, column: 28, }, end: Position { line: 421, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "rpxKey", span: Span { start: Position { line: 423, column: 7, }, end: Position { line: 423, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 423, column: 16, }, end: Position { line: 423, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 424, column: 9, }, end: Position { line: 424, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 424, column: 21, }, end: Position { line: 424, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 424, column: 28, }, end: Position { line: 424, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 424, column: 35, }, end: Position { line: 424, column: 38, }, }, }, ), ], }, ), span: Span { start: Position { line: 424, column: 16, }, end: Position { line: 424, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 425, column: 9, }, end: Position { line: 425, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 425, column: 19, }, end: Position { line: 425, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 426, column: 9, }, end: Position { line: 426, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 426, column: 23, }, end: Position { line: 426, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 426, column: 27, }, end: Position { line: 426, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "RPX account access key.", span: Span { start: Position { line: 426, column: 34, }, end: Position { line: 426, column: 57, }, }, }, ), ], span: Span { start: Position { line: 426, column: 33, }, end: Position { line: 426, column: 58, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 423, column: 25, }, end: Position { line: 427, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mailCommand", span: Span { start: Position { line: 429, column: 7, }, end: Position { line: 429, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 429, column: 21, }, end: Position { line: 429, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 430, column: 9, }, end: Position { line: 430, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 430, column: 16, }, end: Position { line: 430, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 430, column: 22, }, end: Position { line: 430, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 431, column: 9, }, end: Position { line: 431, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "sendmail %s", span: Span { start: Position { line: 431, column: 20, }, end: Position { line: 431, column: 31, }, }, }, ), ], span: Span { start: Position { line: 431, column: 19, }, end: Position { line: 431, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 432, column: 9, }, end: Position { line: 432, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 432, column: 23, }, end: Position { line: 432, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 432, column: 27, }, end: Position { line: 432, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies the command to use to send notification emails. '%s' will\nbe replaced by the destination email address. The body of the\nmessage will be read from stdin. If this field is left blank,\npassword reset will not be offered.\n", span: Span { start: Position { line: 433, column: 1, }, end: Position { line: 437, column: 9, }, }, }, ), ], span: Span { start: Position { line: 432, column: 33, }, end: Position { line: 437, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 429, column: 30, }, end: Position { line: 438, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "resetPasswordMessage", span: Span { start: Position { line: 440, column: 7, }, end: Position { line: 440, column: 27, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 440, column: 30, }, end: Position { line: 440, column: 38, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 441, column: 9, }, end: Position { line: 441, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 441, column: 16, }, end: Position { line: 441, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 441, column: 22, }, end: Position { line: 441, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 442, column: 9, }, end: Position { line: 442, column: 16, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "> From: gitit@$hostname$\n> To: $useremail$\n> Subject: Wiki password reset\n>\n> Hello $username$,\n>\n> To reset your password, please follow the link below:\n> http://$hostname$:$port$$resetlink$\n>\n> Regards\n", span: Span { start: Position { line: 443, column: 1, }, end: Position { line: 453, column: 9, }, }, }, ), ], span: Span { start: Position { line: 442, column: 19, }, end: Position { line: 453, column: 11, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 454, column: 9, }, end: Position { line: 454, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 454, column: 23, }, end: Position { line: 454, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 454, column: 27, }, end: Position { line: 454, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Gives the text of the message that will be sent to the user should\nshe want to reset her password, or change other registration info.\nThe lines must be indented, and must begin with '>'. The initial\nspaces and '> ' will be stripped off. $username$ will be replaced by\nthe user's username, $useremail$ by her email address, $hostname$ by\nthe hostname on which the wiki is running (as returned by the\nhostname system call), $port$ by the port on which the wiki is\nrunning, and $resetlink$ by the relative path of a reset link derived\nfrom the user's existing hashed password. If your gitit wiki is being\nproxied to a location other than the root path of $port$, you should\nchange the link to reflect this: for example, to\nhttp://$hostname$/path/to/wiki$resetlink$ or\nhttp://gitit.$hostname$$resetlink$\n", span: Span { start: Position { line: 455, column: 1, }, end: Position { line: 468, column: 9, }, }, }, ), ], span: Span { start: Position { line: 454, column: 33, }, end: Position { line: 468, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 440, column: 39, }, end: Position { line: 469, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "useFeed", span: Span { start: Position { line: 471, column: 7, }, end: Position { line: 471, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 471, column: 17, }, end: Position { line: 471, column: 25, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 472, column: 9, }, end: Position { line: 472, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 472, column: 16, }, end: Position { line: 472, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 472, column: 22, }, end: Position { line: 472, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 473, column: 9, }, end: Position { line: 473, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 473, column: 19, }, end: Position { line: 473, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 474, column: 9, }, end: Position { line: 474, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 474, column: 23, }, end: Position { line: 474, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 474, column: 27, }, end: Position { line: 474, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies whether an ATOM feed should be enabled (for the site and\nfor individual pages).\n", span: Span { start: Position { line: 475, column: 1, }, end: Position { line: 477, column: 9, }, }, }, ), ], span: Span { start: Position { line: 474, column: 33, }, end: Position { line: 477, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 471, column: 26, }, end: Position { line: 478, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "baseUrl", span: Span { start: Position { line: 480, column: 7, }, end: Position { line: 480, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 480, column: 17, }, end: Position { line: 480, column: 25, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 481, column: 9, }, end: Position { line: 481, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 481, column: 21, }, end: Position { line: 481, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 481, column: 28, }, end: Position { line: 481, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 481, column: 35, }, end: Position { line: 481, column: 38, }, }, }, ), ], }, ), span: Span { start: Position { line: 481, column: 16, }, end: Position { line: 481, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 482, column: 9, }, end: Position { line: 482, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 482, column: 19, }, end: Position { line: 482, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 483, column: 9, }, end: Position { line: 483, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 483, column: 23, }, end: Position { line: 483, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 483, column: 27, }, end: Position { line: 483, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The base URL of the wiki, to be used in constructing feed IDs and RPX\ntoken_urls. Set this if useFeed is false or authentication-method\nis 'rpx'.\n", span: Span { start: Position { line: 484, column: 1, }, end: Position { line: 487, column: 9, }, }, }, ), ], span: Span { start: Position { line: 483, column: 33, }, end: Position { line: 487, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 480, column: 26, }, end: Position { line: 488, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "absoluteUrls", span: Span { start: Position { line: 490, column: 7, }, end: Position { line: 490, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 490, column: 22, }, end: Position { line: 490, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 491, column: 9, }, end: Position { line: 491, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 491, column: 16, }, end: Position { line: 491, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 491, column: 22, }, end: Position { line: 491, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 492, column: 9, }, end: Position { line: 492, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 492, column: 19, }, end: Position { line: 492, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 493, column: 9, }, end: Position { line: 493, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 493, column: 23, }, end: Position { line: 493, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 493, column: 27, }, end: Position { line: 493, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Make wikilinks absolute with respect to the base-url. So, for\nexample, in a wiki served at the base URL '/wiki', on a page\nSub/Page, the wikilink `[Cactus]()` will produce a link to\n'/wiki/Cactus' if absoluteUrls is true, and a relative link to\n'Cactus' (referring to '/wiki/Sub/Cactus') if absolute-urls is 'no'.\n", span: Span { start: Position { line: 494, column: 1, }, end: Position { line: 499, column: 9, }, }, }, ), ], span: Span { start: Position { line: 493, column: 33, }, end: Position { line: 499, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 490, column: 31, }, end: Position { line: 500, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "feedDays", span: Span { start: Position { line: 502, column: 7, }, end: Position { line: 502, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 502, column: 18, }, end: Position { line: 502, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 503, column: 9, }, end: Position { line: 503, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 503, column: 16, }, end: Position { line: 503, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 503, column: 22, }, end: Position { line: 503, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 504, column: 9, }, end: Position { line: 504, column: 16, }, }, }, ), ], to: Integer( Integer { value: "14", span: Span { start: Position { line: 504, column: 19, }, end: Position { line: 504, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 505, column: 9, }, end: Position { line: 505, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 505, column: 23, }, end: Position { line: 505, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 505, column: 27, }, end: Position { line: 505, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Number of days to be included in feeds.", span: Span { start: Position { line: 505, column: 34, }, end: Position { line: 505, column: 73, }, }, }, ), ], span: Span { start: Position { line: 505, column: 33, }, end: Position { line: 505, column: 74, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 502, column: 27, }, end: Position { line: 506, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "feedRefreshTime", span: Span { start: Position { line: 508, column: 7, }, end: Position { line: 508, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 508, column: 25, }, end: Position { line: 508, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 509, column: 9, }, end: Position { line: 509, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 509, column: 16, }, end: Position { line: 509, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 509, column: 22, }, end: Position { line: 509, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 510, column: 9, }, end: Position { line: 510, column: 16, }, }, }, ), ], to: Integer( Integer { value: "60", span: Span { start: Position { line: 510, column: 19, }, end: Position { line: 510, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 511, column: 9, }, end: Position { line: 511, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 511, column: 23, }, end: Position { line: 511, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 511, column: 27, }, end: Position { line: 511, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Number of minutes to cache feeds before refreshing.", span: Span { start: Position { line: 511, column: 34, }, end: Position { line: 511, column: 85, }, }, }, ), ], span: Span { start: Position { line: 511, column: 33, }, end: Position { line: 511, column: 86, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 508, column: 34, }, end: Position { line: 512, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "pdfExport", span: Span { start: Position { line: 514, column: 7, }, end: Position { line: 514, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 514, column: 19, }, end: Position { line: 514, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 515, column: 9, }, end: Position { line: 515, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 515, column: 16, }, end: Position { line: 515, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 515, column: 22, }, end: Position { line: 515, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 516, column: 9, }, end: Position { line: 516, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 516, column: 19, }, end: Position { line: 516, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 517, column: 9, }, end: Position { line: 517, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 517, column: 23, }, end: Position { line: 517, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 517, column: 27, }, end: Position { line: 517, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "If true, PDF will appear in export options. PDF will be created using\npdflatex, which must be installed and in the path. Note that PDF\nexports create significant additional server load.\n", span: Span { start: Position { line: 518, column: 1, }, end: Position { line: 521, column: 9, }, }, }, ), ], span: Span { start: Position { line: 517, column: 33, }, end: Position { line: 521, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 514, column: 28, }, end: Position { line: 522, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "pandocUserData", span: Span { start: Position { line: 524, column: 7, }, end: Position { line: 524, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 524, column: 24, }, end: Position { line: 524, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 525, column: 9, }, end: Position { line: 525, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 525, column: 21, }, end: Position { line: 525, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 525, column: 28, }, end: Position { line: 525, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "path", span: Span { start: Position { line: 525, column: 35, }, end: Position { line: 525, column: 39, }, }, }, ), ], }, ), span: Span { start: Position { line: 525, column: 16, }, end: Position { line: 525, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 526, column: 9, }, end: Position { line: 526, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 526, column: 19, }, end: Position { line: 526, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 527, column: 9, }, end: Position { line: 527, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 527, column: 23, }, end: Position { line: 527, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 527, column: 27, }, end: Position { line: 527, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "If a directory is specified, this will be searched for pandoc\ncustomizations. These can include a templates/ directory for custom\ntemplates for various export formats, an S5 directory for custom S5\nstyles, and a reference.odt for ODT exports. If no directory is\nspecified, $HOME/.pandoc will be searched. See pandoc's README for\nmore information.\n", span: Span { start: Position { line: 528, column: 1, }, end: Position { line: 534, column: 9, }, }, }, ), ], span: Span { start: Position { line: 527, column: 33, }, end: Position { line: 534, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 524, column: 33, }, end: Position { line: 535, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "xssSanitize", span: Span { start: Position { line: 537, column: 7, }, end: Position { line: 537, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 537, column: 21, }, end: Position { line: 537, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 538, column: 9, }, end: Position { line: 538, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 538, column: 16, }, end: Position { line: 538, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 538, column: 22, }, end: Position { line: 538, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 539, column: 9, }, end: Position { line: 539, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 539, column: 19, }, end: Position { line: 539, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 540, column: 9, }, end: Position { line: 540, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 540, column: 23, }, end: Position { line: 540, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 540, column: 27, }, end: Position { line: 540, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "If true, all HTML (including that produced by pandoc) is filtered\nthrough xss-sanitize. Set to no only if you trust all of your users.\n", span: Span { start: Position { line: 541, column: 1, }, end: Position { line: 543, column: 9, }, }, }, ), ], span: Span { start: Position { line: 540, column: 33, }, end: Position { line: 543, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 537, column: 30, }, end: Position { line: 544, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "oauthClientId", span: Span { start: Position { line: 546, column: 7, }, end: Position { line: 546, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 546, column: 23, }, end: Position { line: 546, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 547, column: 9, }, end: Position { line: 547, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 547, column: 21, }, end: Position { line: 547, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 547, column: 28, }, end: Position { line: 547, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 547, column: 35, }, end: Position { line: 547, column: 38, }, }, }, ), ], }, ), span: Span { start: Position { line: 547, column: 16, }, end: Position { line: 547, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 548, column: 9, }, end: Position { line: 548, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 548, column: 19, }, end: Position { line: 548, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 549, column: 9, }, end: Position { line: 549, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 549, column: 23, }, end: Position { line: 549, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 549, column: 27, }, end: Position { line: 549, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "OAuth client ID", span: Span { start: Position { line: 549, column: 34, }, end: Position { line: 549, column: 49, }, }, }, ), ], span: Span { start: Position { line: 549, column: 33, }, end: Position { line: 549, column: 50, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 546, column: 32, }, end: Position { line: 550, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "oauthClientSecret", span: Span { start: Position { line: 552, column: 7, }, end: Position { line: 552, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 552, column: 27, }, end: Position { line: 552, column: 35, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 553, column: 9, }, end: Position { line: 553, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 553, column: 21, }, end: Position { line: 553, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 553, column: 28, }, end: Position { line: 553, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 553, column: 35, }, end: Position { line: 553, column: 38, }, }, }, ), ], }, ), span: Span { start: Position { line: 553, column: 16, }, end: Position { line: 553, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 554, column: 9, }, end: Position { line: 554, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 554, column: 19, }, end: Position { line: 554, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 555, column: 9, }, end: Position { line: 555, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 555, column: 23, }, end: Position { line: 555, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 555, column: 27, }, end: Position { line: 555, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "OAuth client secret", span: Span { start: Position { line: 555, column: 34, }, end: Position { line: 555, column: 53, }, }, }, ), ], span: Span { start: Position { line: 555, column: 33, }, end: Position { line: 555, column: 54, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 552, column: 36, }, end: Position { line: 556, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "oauthCallback", span: Span { start: Position { line: 558, column: 7, }, end: Position { line: 558, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 558, column: 23, }, end: Position { line: 558, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 559, column: 9, }, end: Position { line: 559, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 559, column: 21, }, end: Position { line: 559, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 559, column: 28, }, end: Position { line: 559, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 559, column: 35, }, end: Position { line: 559, column: 38, }, }, }, ), ], }, ), span: Span { start: Position { line: 559, column: 16, }, end: Position { line: 559, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 560, column: 9, }, end: Position { line: 560, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 560, column: 19, }, end: Position { line: 560, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 561, column: 9, }, end: Position { line: 561, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 561, column: 23, }, end: Position { line: 561, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 561, column: 27, }, end: Position { line: 561, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "OAuth callback URL", span: Span { start: Position { line: 561, column: 34, }, end: Position { line: 561, column: 52, }, }, }, ), ], span: Span { start: Position { line: 561, column: 33, }, end: Position { line: 561, column: 53, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 558, column: 32, }, end: Position { line: 562, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "oauthAuthorizeEndpoint", span: Span { start: Position { line: 564, column: 7, }, end: Position { line: 564, column: 29, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 564, column: 32, }, end: Position { line: 564, column: 40, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 565, column: 9, }, end: Position { line: 565, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 565, column: 21, }, end: Position { line: 565, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 565, column: 28, }, end: Position { line: 565, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 565, column: 35, }, end: Position { line: 565, column: 38, }, }, }, ), ], }, ), span: Span { start: Position { line: 565, column: 16, }, end: Position { line: 565, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 566, column: 9, }, end: Position { line: 566, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 566, column: 19, }, end: Position { line: 566, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 567, column: 9, }, end: Position { line: 567, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 567, column: 23, }, end: Position { line: 567, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 567, column: 27, }, end: Position { line: 567, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "OAuth authorize endpoint", span: Span { start: Position { line: 567, column: 34, }, end: Position { line: 567, column: 58, }, }, }, ), ], span: Span { start: Position { line: 567, column: 33, }, end: Position { line: 567, column: 59, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 564, column: 41, }, end: Position { line: 568, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "oauthAccessTokenEndpoint", span: Span { start: Position { line: 570, column: 7, }, end: Position { line: 570, column: 31, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 570, column: 34, }, end: Position { line: 570, column: 42, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 571, column: 9, }, end: Position { line: 571, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 571, column: 21, }, end: Position { line: 571, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 571, column: 28, }, end: Position { line: 571, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 571, column: 35, }, end: Position { line: 571, column: 38, }, }, }, ), ], }, ), span: Span { start: Position { line: 571, column: 16, }, end: Position { line: 571, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 572, column: 9, }, end: Position { line: 572, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 572, column: 19, }, end: Position { line: 572, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 573, column: 9, }, end: Position { line: 573, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 573, column: 23, }, end: Position { line: 573, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 573, column: 27, }, end: Position { line: 573, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "OAuth access token endpoint", span: Span { start: Position { line: 573, column: 34, }, end: Position { line: 573, column: 61, }, }, }, ), ], span: Span { start: Position { line: 573, column: 33, }, end: Position { line: 573, column: 62, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 570, column: 43, }, end: Position { line: 574, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "githubOrg", span: Span { start: Position { line: 576, column: 7, }, end: Position { line: 576, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 576, column: 19, }, end: Position { line: 576, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 577, column: 9, }, end: Position { line: 577, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 577, column: 21, }, end: Position { line: 577, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 577, column: 28, }, end: Position { line: 577, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 577, column: 35, }, end: Position { line: 577, column: 38, }, }, }, ), ], }, ), span: Span { start: Position { line: 577, column: 16, }, end: Position { line: 577, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 578, column: 9, }, end: Position { line: 578, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 578, column: 19, }, end: Position { line: 578, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 579, column: 9, }, end: Position { line: 579, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 579, column: 23, }, end: Position { line: 579, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 579, column: 27, }, end: Position { line: 579, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Github organization", span: Span { start: Position { line: 579, column: 34, }, end: Position { line: 579, column: 53, }, }, }, ), ], span: Span { start: Position { line: 579, column: 33, }, end: Position { line: 579, column: 54, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 576, column: 28, }, end: Position { line: 580, column: 8, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 29, column: 18, }, end: Position { line: 581, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "configFile", span: Span { start: Position { line: 583, column: 3, }, end: Position { line: 583, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 583, column: 16, }, end: Position { line: 583, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 583, column: 21, }, end: Position { line: 583, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "gitit.conf", span: Span { start: Position { line: 583, column: 32, }, end: Position { line: 583, column: 42, }, }, }, ), ], span: Span { start: Position { line: 583, column: 31, }, end: Position { line: 583, column: 43, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "address: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 584, column: 14, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 584, column: 16, }, end: Position { line: 584, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "address", span: Span { start: Position { line: 584, column: 20, }, end: Position { line: 584, column: 27, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nport: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 585, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 585, column: 13, }, end: Position { line: 585, column: 21, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 585, column: 22, }, end: Position { line: 585, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "port", span: Span { start: Position { line: 585, column: 26, }, end: Position { line: 585, column: 30, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nwiki-title: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 586, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 586, column: 19, }, end: Position { line: 586, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "wikiTitle", span: Span { start: Position { line: 586, column: 23, }, end: Position { line: 586, column: 32, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nrepository-type: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 587, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 587, column: 24, }, end: Position { line: 587, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "repositoryType", span: Span { start: Position { line: 587, column: 28, }, end: Position { line: 587, column: 42, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nrepository-path: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 588, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 588, column: 24, }, end: Position { line: 588, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "repositoryPath", span: Span { start: Position { line: 588, column: 28, }, end: Position { line: 588, column: 42, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nrequire-authentication: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 589, column: 29, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 589, column: 31, }, end: Position { line: 589, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "requireAuthentication", span: Span { start: Position { line: 589, column: 35, }, end: Position { line: 589, column: 56, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nauthentication-method: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 590, column: 28, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 590, column: 30, }, end: Position { line: 590, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "authenticationMethod", span: Span { start: Position { line: 590, column: 34, }, end: Position { line: 590, column: 54, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nuser-file: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 591, column: 16, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 591, column: 18, }, end: Position { line: 591, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "userFile", span: Span { start: Position { line: 591, column: 22, }, end: Position { line: 591, column: 30, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nsession-timeout: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 592, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 592, column: 24, }, end: Position { line: 592, column: 32, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 592, column: 33, }, end: Position { line: 592, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "sessionTimeout", span: Span { start: Position { line: 592, column: 37, }, end: Position { line: 592, column: 51, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nstatic-dir: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 593, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 593, column: 19, }, end: Position { line: 593, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "staticDir", span: Span { start: Position { line: 593, column: 23, }, end: Position { line: 593, column: 32, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\ndefault-page-type: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 594, column: 24, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 594, column: 26, }, end: Position { line: 594, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "defaultPageType", span: Span { start: Position { line: 594, column: 30, }, end: Position { line: 594, column: 45, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nmath: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 595, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 595, column: 13, }, end: Position { line: 595, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "math", span: Span { start: Position { line: 595, column: 17, }, end: Position { line: 595, column: 21, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nmathjax-script: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 596, column: 21, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 596, column: 23, }, end: Position { line: 596, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mathJaxScript", span: Span { start: Position { line: 596, column: 27, }, end: Position { line: 596, column: 40, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nshow-lhs-bird-tracks: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 597, column: 27, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toYesNo", span: Span { start: Position { line: 597, column: 29, }, end: Position { line: 597, column: 36, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 597, column: 37, }, end: Position { line: 597, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "showLhsBirdTracks", span: Span { start: Position { line: 597, column: 41, }, end: Position { line: 597, column: 58, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\ntemplates-dir: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 598, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 598, column: 22, }, end: Position { line: 598, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "templatesDir", span: Span { start: Position { line: 598, column: 26, }, end: Position { line: 598, column: 38, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nlog-file: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 599, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 599, column: 17, }, end: Position { line: 599, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "logFile", span: Span { start: Position { line: 599, column: 21, }, end: Position { line: 599, column: 28, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nlog-level: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 600, column: 16, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 600, column: 18, }, end: Position { line: 600, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "logLevel", span: Span { start: Position { line: 600, column: 22, }, end: Position { line: 600, column: 30, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nfront-page: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 601, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 601, column: 19, }, end: Position { line: 601, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "frontPage", span: Span { start: Position { line: 601, column: 23, }, end: Position { line: 601, column: 32, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nno-delete: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 602, column: 16, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 602, column: 18, }, end: Position { line: 602, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "noDelete", span: Span { start: Position { line: 602, column: 22, }, end: Position { line: 602, column: 30, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nno-edit: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 603, column: 14, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 603, column: 16, }, end: Position { line: 603, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "noEdit", span: Span { start: Position { line: 603, column: 20, }, end: Position { line: 603, column: 26, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\ndefault-summary: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 604, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 604, column: 24, }, end: Position { line: 604, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "defaultSummary", span: Span { start: Position { line: 604, column: 28, }, end: Position { line: 604, column: 42, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\ntable-of-contents: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 605, column: 24, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toYesNo", span: Span { start: Position { line: 605, column: 26, }, end: Position { line: 605, column: 33, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 605, column: 34, }, end: Position { line: 605, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "tableOfContents", span: Span { start: Position { line: 605, column: 38, }, end: Position { line: 605, column: 53, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nplugins: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 606, column: 14, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 606, column: 16, }, end: Position { line: 606, column: 32, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: ",", span: Span { start: Position { line: 606, column: 34, }, end: Position { line: 606, column: 35, }, }, }, ), ], span: Span { start: Position { line: 606, column: 33, }, end: Position { line: 606, column: 36, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 606, column: 37, }, end: Position { line: 606, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "plugins", span: Span { start: Position { line: 606, column: 41, }, end: Position { line: 606, column: 48, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nuse-cache: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 607, column: 16, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toYesNo", span: Span { start: Position { line: 607, column: 18, }, end: Position { line: 607, column: 25, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 607, column: 26, }, end: Position { line: 607, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "useCache", span: Span { start: Position { line: 607, column: 30, }, end: Position { line: 607, column: 38, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\ncache-dir: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 608, column: 16, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 608, column: 18, }, end: Position { line: 608, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "cacheDir", span: Span { start: Position { line: 608, column: 22, }, end: Position { line: 608, column: 30, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nmax-upload-size: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 609, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 609, column: 24, }, end: Position { line: 609, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "maxUploadSize", span: Span { start: Position { line: 609, column: 28, }, end: Position { line: 609, column: 41, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nmax-page-size: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 610, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 610, column: 22, }, end: Position { line: 610, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "maxPageSize", span: Span { start: Position { line: 610, column: 26, }, end: Position { line: 610, column: 37, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\ndebug-mode: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 611, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toYesNo", span: Span { start: Position { line: 611, column: 19, }, end: Position { line: 611, column: 26, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 611, column: 27, }, end: Position { line: 611, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "debugMode", span: Span { start: Position { line: 611, column: 31, }, end: Position { line: 611, column: 40, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\ncompress-responses: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 612, column: 25, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toYesNo", span: Span { start: Position { line: 612, column: 27, }, end: Position { line: 612, column: 34, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 612, column: 35, }, end: Position { line: 612, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "compressResponses", span: Span { start: Position { line: 612, column: 39, }, end: Position { line: 612, column: 56, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nmime-types-file: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 613, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 613, column: 24, }, end: Position { line: 613, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mimeTypesFile", span: Span { start: Position { line: 613, column: 28, }, end: Position { line: 613, column: 41, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nuse-recaptcha: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 614, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toYesNo", span: Span { start: Position { line: 614, column: 22, }, end: Position { line: 614, column: 29, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 614, column: 30, }, end: Position { line: 614, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "useReCaptcha", span: Span { start: Position { line: 614, column: 34, }, end: Position { line: 614, column: 46, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nrecaptcha-private-key: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 615, column: 28, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 615, column: 30, }, end: Position { line: 615, column: 38, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 615, column: 39, }, end: Position { line: 615, column: 42, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "reCaptchaPrivateKey", span: Span { start: Position { line: 615, column: 43, }, end: Position { line: 615, column: 62, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nrecaptcha-public-key: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 616, column: 27, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 616, column: 29, }, end: Position { line: 616, column: 37, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 616, column: 38, }, end: Position { line: 616, column: 41, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "reCaptchaPublicKey", span: Span { start: Position { line: 616, column: 42, }, end: Position { line: 616, column: 60, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\naccess-question: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 617, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 617, column: 24, }, end: Position { line: 617, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "accessQuestion", span: Span { start: Position { line: 617, column: 28, }, end: Position { line: 617, column: 42, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\naccess-question-answers: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 618, column: 30, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 618, column: 32, }, end: Position { line: 618, column: 35, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "accessQuestionAnswers", span: Span { start: Position { line: 618, column: 36, }, end: Position { line: 618, column: 57, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nrpx-domain: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 619, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 619, column: 19, }, end: Position { line: 619, column: 27, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 619, column: 28, }, end: Position { line: 619, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "rpxDomain", span: Span { start: Position { line: 619, column: 32, }, end: Position { line: 619, column: 41, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nrpx-key: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 620, column: 14, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 620, column: 16, }, end: Position { line: 620, column: 24, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 620, column: 25, }, end: Position { line: 620, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "rpxKey", span: Span { start: Position { line: 620, column: 29, }, end: Position { line: 620, column: 35, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nmail-command: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 621, column: 19, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 621, column: 21, }, end: Position { line: 621, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mailCommand", span: Span { start: Position { line: 621, column: 25, }, end: Position { line: 621, column: 36, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nreset-password-message: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 622, column: 29, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 622, column: 31, }, end: Position { line: 622, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "resetPasswordMessage", span: Span { start: Position { line: 622, column: 35, }, end: Position { line: 622, column: 55, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nuse-feed: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 623, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toYesNo", span: Span { start: Position { line: 623, column: 17, }, end: Position { line: 623, column: 24, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 623, column: 25, }, end: Position { line: 623, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "useFeed", span: Span { start: Position { line: 623, column: 29, }, end: Position { line: 623, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nbase-url: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 624, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 624, column: 17, }, end: Position { line: 624, column: 25, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 624, column: 26, }, end: Position { line: 624, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "baseUrl", span: Span { start: Position { line: 624, column: 30, }, end: Position { line: 624, column: 37, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nabsolute-urls: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 625, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toYesNo", span: Span { start: Position { line: 625, column: 22, }, end: Position { line: 625, column: 29, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 625, column: 30, }, end: Position { line: 625, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "absoluteUrls", span: Span { start: Position { line: 625, column: 34, }, end: Position { line: 625, column: 46, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nfeed-days: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 626, column: 16, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 626, column: 18, }, end: Position { line: 626, column: 26, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 626, column: 27, }, end: Position { line: 626, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "feedDays", span: Span { start: Position { line: 626, column: 31, }, end: Position { line: 626, column: 39, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nfeed-refresh-time: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 627, column: 24, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 627, column: 26, }, end: Position { line: 627, column: 34, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 627, column: 35, }, end: Position { line: 627, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "feedRefreshTime", span: Span { start: Position { line: 627, column: 39, }, end: Position { line: 627, column: 54, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\npdf-export: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 628, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toYesNo", span: Span { start: Position { line: 628, column: 19, }, end: Position { line: 628, column: 26, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 628, column: 27, }, end: Position { line: 628, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "pdfExport", span: Span { start: Position { line: 628, column: 31, }, end: Position { line: 628, column: 40, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\npandoc-user-data: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 629, column: 23, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 629, column: 25, }, end: Position { line: 629, column: 33, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 629, column: 34, }, end: Position { line: 629, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "pandocUserData", span: Span { start: Position { line: 629, column: 38, }, end: Position { line: 629, column: 52, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nxss-sanitize: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 630, column: 19, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toYesNo", span: Span { start: Position { line: 630, column: 21, }, end: Position { line: 630, column: 28, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 630, column: 29, }, end: Position { line: 630, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "xssSanitize", span: Span { start: Position { line: 630, column: 33, }, end: Position { line: 630, column: 44, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n\n[Github]\noauthclientid: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 633, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 633, column: 22, }, end: Position { line: 633, column: 30, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 633, column: 31, }, end: Position { line: 633, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "oauthClientId", span: Span { start: Position { line: 633, column: 35, }, end: Position { line: 633, column: 48, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\noauthclientsecret: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 634, column: 24, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 634, column: 26, }, end: Position { line: 634, column: 34, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 634, column: 35, }, end: Position { line: 634, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "oauthClientSecret", span: Span { start: Position { line: 634, column: 39, }, end: Position { line: 634, column: 56, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\noauthcallback: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 635, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 635, column: 22, }, end: Position { line: 635, column: 30, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 635, column: 31, }, end: Position { line: 635, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "oauthCallback", span: Span { start: Position { line: 635, column: 35, }, end: Position { line: 635, column: 48, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\noauthauthorizeendpoint: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 636, column: 29, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 636, column: 31, }, end: Position { line: 636, column: 39, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 636, column: 40, }, end: Position { line: 636, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "oauthAuthorizeEndpoint", span: Span { start: Position { line: 636, column: 44, }, end: Position { line: 636, column: 66, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\noauthaccesstokenendpoint: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 637, column: 31, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 637, column: 33, }, end: Position { line: 637, column: 41, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 637, column: 42, }, end: Position { line: 637, column: 45, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "oauthAccessTokenEndpoint", span: Span { start: Position { line: 637, column: 46, }, end: Position { line: 637, column: 70, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\ngithub-org: ", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 638, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 638, column: 19, }, end: Position { line: 638, column: 27, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 638, column: 28, }, end: Position { line: 638, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "githubOrg", span: Span { start: Position { line: 638, column: 32, }, end: Position { line: 638, column: 41, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 584, column: 1, }, end: Position { line: 639, column: 3, }, }, }, ), ], span: Span { start: Position { line: 583, column: 44, }, end: Position { line: 639, column: 5, }, }, }, ), ], }, ), }, ), ], target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 645, column: 3, }, end: Position { line: 645, column: 10, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 645, column: 11, }, end: Position { line: 645, column: 19, }, }, }, ), Raw( PartRaw { content: "gitit", span: Span { start: Position { line: 645, column: 20, }, end: Position { line: 645, column: 25, }, }, }, ), ], to: Identifier( Identifier { id: "gititOptions", span: Span { start: Position { line: 645, column: 28, }, end: Position { line: 645, column: 40, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "config", span: Span { start: Position { line: 647, column: 3, }, end: Position { line: 647, column: 9, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 647, column: 12, }, end: Position { line: 647, column: 16, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 647, column: 17, }, end: Position { line: 647, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 647, column: 21, }, end: Position { line: 647, column: 27, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "users", span: Span { start: Position { line: 649, column: 5, }, end: Position { line: 649, column: 10, }, }, }, ), Raw( PartRaw { content: "users", span: Span { start: Position { line: 649, column: 11, }, end: Position { line: 649, column: 16, }, }, }, ), Raw( PartRaw { content: "gitit", span: Span { start: Position { line: 649, column: 17, }, end: Position { line: 649, column: 22, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 650, column: 7, }, end: Position { line: 650, column: 12, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 650, column: 15, }, end: Position { line: 650, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "users", span: Span { start: Position { line: 650, column: 22, }, end: Position { line: 650, column: 27, }, }, }, ), Raw( PartRaw { content: "groups", span: Span { start: Position { line: 650, column: 28, }, end: Position { line: 650, column: 34, }, }, }, ), Raw( PartRaw { content: "gitit", span: Span { start: Position { line: 650, column: 35, }, end: Position { line: 650, column: 40, }, }, }, ), Raw( PartRaw { content: "name", span: Span { start: Position { line: 650, column: 41, }, end: Position { line: 650, column: 45, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 651, column: 7, }, end: Position { line: 651, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Gitit user", span: Span { start: Position { line: 651, column: 22, }, end: Position { line: 651, column: 32, }, }, }, ), ], span: Span { start: Position { line: 651, column: 21, }, end: Position { line: 651, column: 33, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "home", span: Span { start: Position { line: 652, column: 7, }, end: Position { line: 652, column: 11, }, }, }, ), ], to: Identifier( Identifier { id: "homeDir", span: Span { start: Position { line: 652, column: 14, }, end: Position { line: 652, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "createHome", span: Span { start: Position { line: 653, column: 7, }, end: Position { line: 653, column: 17, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 653, column: 20, }, end: Position { line: 653, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "uid", span: Span { start: Position { line: 654, column: 7, }, end: Position { line: 654, column: 10, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 654, column: 13, }, end: Position { line: 654, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "ids", span: Span { start: Position { line: 654, column: 20, }, end: Position { line: 654, column: 23, }, }, }, ), Raw( PartRaw { content: "uids", span: Span { start: Position { line: 654, column: 24, }, end: Position { line: 654, column: 28, }, }, }, ), Raw( PartRaw { content: "gitit", span: Span { start: Position { line: 654, column: 29, }, end: Position { line: 654, column: 34, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 649, column: 25, }, end: Position { line: 655, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "users", span: Span { start: Position { line: 657, column: 5, }, end: Position { line: 657, column: 10, }, }, }, ), Raw( PartRaw { content: "groups", span: Span { start: Position { line: 657, column: 11, }, end: Position { line: 657, column: 17, }, }, }, ), Raw( PartRaw { content: "gitit", span: Span { start: Position { line: 657, column: 18, }, end: Position { line: 657, column: 23, }, }, }, ), Raw( PartRaw { content: "gid", span: Span { start: Position { line: 657, column: 24, }, end: Position { line: 657, column: 27, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 657, column: 30, }, end: Position { line: 657, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "ids", span: Span { start: Position { line: 657, column: 37, }, end: Position { line: 657, column: 40, }, }, }, ), Raw( PartRaw { content: "gids", span: Span { start: Position { line: 657, column: 41, }, end: Position { line: 657, column: 45, }, }, }, ), Raw( PartRaw { content: "gitit", span: Span { start: Position { line: 657, column: 46, }, end: Position { line: 657, column: 51, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 659, column: 5, }, end: Position { line: 659, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 659, column: 13, }, end: Position { line: 659, column: 21, }, }, }, ), Raw( PartRaw { content: "gitit", span: Span { start: Position { line: 659, column: 22, }, end: Position { line: 659, column: 27, }, }, }, ), ], to: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "uid", span: Span { start: Position { line: 660, column: 7, }, end: Position { line: 660, column: 10, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 660, column: 13, }, end: Position { line: 660, column: 21, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 660, column: 22, }, end: Position { line: 660, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "ids", span: Span { start: Position { line: 660, column: 29, }, end: Position { line: 660, column: 32, }, }, }, ), Raw( PartRaw { content: "uids", span: Span { start: Position { line: 660, column: 33, }, end: Position { line: 660, column: 37, }, }, }, ), Raw( PartRaw { content: "gitit", span: Span { start: Position { line: 660, column: 38, }, end: Position { line: 660, column: 43, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gid", span: Span { start: Position { line: 661, column: 7, }, end: Position { line: 661, column: 10, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 661, column: 13, }, end: Position { line: 661, column: 21, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 661, column: 22, }, end: Position { line: 661, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "ids", span: Span { start: Position { line: 661, column: 29, }, end: Position { line: 661, column: 32, }, }, }, ), Raw( PartRaw { content: "gids", span: Span { start: Position { line: 661, column: 33, }, end: Position { line: 661, column: 37, }, }, }, ), Raw( PartRaw { content: "gitit", span: Span { start: Position { line: 661, column: 38, }, end: Position { line: 661, column: 43, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 663, column: 7, }, end: Position { line: 663, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Git and Pandoc Powered Wiki", span: Span { start: Position { line: 663, column: 22, }, end: Position { line: 663, column: 49, }, }, }, ), ], span: Span { start: Position { line: 663, column: 21, }, end: Position { line: 663, column: 50, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 664, column: 7, }, end: Position { line: 664, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "network.target", span: Span { start: Position { line: 664, column: 18, }, end: Position { line: 664, column: 32, }, }, }, ), ], span: Span { start: Position { line: 664, column: 17, }, end: Position { line: 664, column: 33, }, }, }, ), ], span: Span { start: Position { line: 664, column: 15, }, end: Position { line: 664, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 665, column: 7, }, end: Position { line: 665, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "multi-user.target", span: Span { start: Position { line: 665, column: 21, }, end: Position { line: 665, column: 38, }, }, }, ), ], span: Span { start: Position { line: 665, column: 20, }, end: Position { line: 665, column: 39, }, }, }, ), ], span: Span { start: Position { line: 665, column: 18, }, end: Position { line: 665, column: 41, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 666, column: 7, }, end: Position { line: 666, column: 11, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 666, column: 19, }, end: Position { line: 666, column: 23, }, }, }, ), target: BinaryOperation( BinaryOperation { left: List( List { elements: [ Identifier( Identifier { id: "curl", span: Span { start: Position { line: 666, column: 27, }, end: Position { line: 666, column: 31, }, }, }, ), ], span: Span { start: Position { line: 666, column: 25, }, end: Position { line: 666, column: 33, }, }, }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 667, column: 17, }, end: Position { line: 667, column: 25, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 667, column: 26, }, end: Position { line: 667, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "pdfExport", span: Span { start: Position { line: 667, column: 30, }, end: Position { line: 667, column: 39, }, }, }, ), ], default: None, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "texlive", span: Span { start: Position { line: 667, column: 40, }, end: Position { line: 667, column: 47, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "combined", span: Span { start: Position { line: 667, column: 48, }, end: Position { line: 667, column: 56, }, }, }, ), Raw( PartRaw { content: "scheme-basic", span: Span { start: Position { line: 667, column: 57, }, end: Position { line: 667, column: 69, }, }, }, ), ], default: None, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 668, column: 17, }, end: Position { line: 668, column: 25, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 668, column: 27, }, end: Position { line: 668, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "repositoryType", span: Span { start: Position { line: 668, column: 31, }, end: Position { line: 668, column: 45, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: String( String_ { parts: [ Raw( PartRaw { content: "darcs", span: Span { start: Position { line: 668, column: 50, }, end: Position { line: 668, column: 55, }, }, }, ), ], span: Span { start: Position { line: 668, column: 49, }, end: Position { line: 668, column: 56, }, }, }, ), }, ), Identifier( Identifier { id: "darcs", span: Span { start: Position { line: 668, column: 58, }, end: Position { line: 668, column: 63, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 669, column: 17, }, end: Position { line: 669, column: 25, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 669, column: 27, }, end: Position { line: 669, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "repositoryType", span: Span { start: Position { line: 669, column: 31, }, end: Position { line: 669, column: 45, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: String( String_ { parts: [ Raw( PartRaw { content: "mercurial", span: Span { start: Position { line: 669, column: 50, }, end: Position { line: 669, column: 59, }, }, }, ), ], span: Span { start: Position { line: 669, column: 49, }, end: Position { line: 669, column: 60, }, }, }, ), }, ), Identifier( Identifier { id: "mercurial", span: Span { start: Position { line: 669, column: 62, }, end: Position { line: 669, column: 71, }, }, }, ), ], }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 670, column: 17, }, end: Position { line: 670, column: 25, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 670, column: 27, }, end: Position { line: 670, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "repositoryType", span: Span { start: Position { line: 670, column: 31, }, end: Position { line: 670, column: 45, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: String( String_ { parts: [ Raw( PartRaw { content: "git", span: Span { start: Position { line: 670, column: 50, }, end: Position { line: 670, column: 53, }, }, }, ), ], span: Span { start: Position { line: 670, column: 49, }, end: Position { line: 670, column: 54, }, }, }, ), }, ), Identifier( Identifier { id: "git", span: Span { start: Position { line: 670, column: 56, }, end: Position { line: 670, column: 59, }, }, }, ), ], }, ), }, ), }, ), }, ), }, ), span: Span { start: Position { line: 666, column: 14, }, end: Position { line: 670, column: 59, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "preStart", span: Span { start: Position { line: 672, column: 7, }, end: Position { line: 672, column: 15, }, }, }, ), ], to: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gm", span: Span { start: Position { line: 673, column: 9, }, end: Position { line: 673, column: 11, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "gitit@", span: Span { start: Position { line: 673, column: 15, }, end: Position { line: 673, column: 50, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 673, column: 23, }, end: Position { line: 673, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "networking", span: Span { start: Position { line: 673, column: 30, }, end: Position { line: 673, column: 40, }, }, }, ), Raw( PartRaw { content: "hostName", span: Span { start: Position { line: 673, column: 41, }, end: Position { line: 673, column: 49, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 673, column: 14, }, end: Position { line: 673, column: 51, }, }, }, ), }, ), ], target: With( With { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 675, column: 12, }, end: Position { line: 675, column: 15, }, }, }, ), target: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "chown ", span: Span { start: Position { line: 676, column: 1, }, end: Position { line: 676, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "uid", span: Span { start: Position { line: 676, column: 17, }, end: Position { line: 676, column: 20, }, }, }, ), }, ), Raw( PartRaw { content: ":", span: Span { start: Position { line: 676, column: 1, }, end: Position { line: 676, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "gid", span: Span { start: Position { line: 676, column: 24, }, end: Position { line: 676, column: 27, }, }, }, ), }, ), Raw( PartRaw { content: " -R ", span: Span { start: Position { line: 676, column: 1, }, end: Position { line: 676, column: 32, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "homeDir", span: Span { start: Position { line: 676, column: 34, }, end: Position { line: 676, column: 41, }, }, }, ), }, ), Raw( PartRaw { content: "\nfor dir in ", span: Span { start: Position { line: 676, column: 1, }, end: Position { line: 677, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "repositoryPath", span: Span { start: Position { line: 677, column: 22, }, end: Position { line: 677, column: 36, }, }, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 676, column: 1, }, end: Position { line: 677, column: 38, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "staticDir", span: Span { start: Position { line: 677, column: 40, }, end: Position { line: 677, column: 49, }, }, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 676, column: 1, }, end: Position { line: 677, column: 51, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "templatesDir", span: Span { start: Position { line: 677, column: 53, }, end: Position { line: 677, column: 65, }, }, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 676, column: 1, }, end: Position { line: 677, column: 67, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cacheDir", span: Span { start: Position { line: 677, column: 69, }, end: Position { line: 677, column: 77, }, }, }, ), }, ), Raw( PartRaw { content: "\ndo\n if [ ! -d $dir ]\n then\n mkdir -p $dir\n find $dir -type d -exec chmod 0750 {} +\n find $dir -type f -exec chmod 0640 {} +\n fi\ndone\ncd ", span: Span { start: Position { line: 676, column: 1, }, end: Position { line: 686, column: 12, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "repositoryPath", span: Span { start: Position { line: 686, column: 14, }, end: Position { line: 686, column: 28, }, }, }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 676, column: 1, }, end: Position { line: 687, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "repositoryType", span: Span { start: Position { line: 688, column: 14, }, end: Position { line: 688, column: 28, }, }, }, ), operator: EqualTo, right: String( String_ { parts: [ Raw( PartRaw { content: "darcs", span: Span { start: Position { line: 688, column: 33, }, end: Position { line: 688, column: 38, }, }, }, ), ], span: Span { start: Position { line: 688, column: 32, }, end: Position { line: 688, column: 39, }, }, }, ), }, ), then: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "if [ ! -d _darcs ]\nthen\n darcs initialize\n echo \"", span: Span { start: Position { line: 690, column: 1, }, end: Position { line: 693, column: 19, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "gm", span: Span { start: Position { line: 693, column: 21, }, end: Position { line: 693, column: 23, }, }, }, ), }, ), Raw( PartRaw { content: "\" > _darcs/prefs/email\n", span: Span { start: Position { line: 690, column: 1, }, end: Position { line: 694, column: 11, }, }, }, ), ], span: Span { start: Position { line: 689, column: 11, }, end: Position { line: 694, column: 13, }, }, }, ), else_: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "repositoryType", span: Span { start: Position { line: 695, column: 19, }, end: Position { line: 695, column: 33, }, }, }, ), operator: EqualTo, right: String( String_ { parts: [ Raw( PartRaw { content: "mercurial", span: Span { start: Position { line: 695, column: 38, }, end: Position { line: 695, column: 47, }, }, }, ), ], span: Span { start: Position { line: 695, column: 37, }, end: Position { line: 695, column: 48, }, }, }, ), }, ), then: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: " if [ ! -d .hg ]\n then\n hg init\n cat >> .hg/hgrc <