UNPKG

@vue/devtools

Version:
1 lines 55.6 kB
"use strict";(self["webpackChunk_vue_devtools"]=self["webpackChunk_vue_devtools"]||[]).push([[5257],{75257:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"conf\": () => (/* binding */ conf),\n/* harmony export */ \"language\": () => (/* binding */ language)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Artyom Shalkhakov. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *\n * Based on the ATS/Postiats lexer by Hongwei Xi.\n *--------------------------------------------------------------------------------------------*/\nvar conf = {\n comments: {\n lineComment: '//',\n blockComment: ['(*', '*)']\n },\n brackets: [\n ['{', '}'],\n ['[', ']'],\n ['(', ')'],\n ['<', '>']\n ],\n autoClosingPairs: [\n { open: '\"', close: '\"', notIn: ['string', 'comment'] },\n { open: '{', close: '}', notIn: ['string', 'comment'] },\n { open: '[', close: ']', notIn: ['string', 'comment'] },\n { open: '(', close: ')', notIn: ['string', 'comment'] }\n ]\n};\nvar language = {\n tokenPostfix: '.pats',\n // TODO: staload and dynload are followed by a special kind of string literals\n // with {$IDENTIFER} variables, and it also may make sense to highlight\n // the punctuation (. and / and \\) differently.\n // Set defaultToken to invalid to see what you do not tokenize yet\n defaultToken: 'invalid',\n // keyword reference: https://github.com/githwxi/ATS-Postiats/blob/master/src/pats_lexing_token.dats\n keywords: [\n //\n 'abstype',\n 'abst0ype',\n 'absprop',\n 'absview',\n 'absvtype',\n 'absviewtype',\n 'absvt0ype',\n 'absviewt0ype',\n //\n 'as',\n //\n 'and',\n //\n 'assume',\n //\n 'begin',\n //\n /*\n \"case\", // CASE\n */\n //\n 'classdec',\n //\n 'datasort',\n //\n 'datatype',\n 'dataprop',\n 'dataview',\n 'datavtype',\n 'dataviewtype',\n //\n 'do',\n //\n 'end',\n //\n 'extern',\n 'extype',\n 'extvar',\n //\n 'exception',\n //\n 'fn',\n 'fnx',\n 'fun',\n //\n 'prfn',\n 'prfun',\n //\n 'praxi',\n 'castfn',\n //\n 'if',\n 'then',\n 'else',\n //\n 'ifcase',\n //\n 'in',\n //\n 'infix',\n 'infixl',\n 'infixr',\n 'prefix',\n 'postfix',\n //\n 'implmnt',\n 'implement',\n //\n 'primplmnt',\n 'primplement',\n //\n 'import',\n //\n /*\n \"lam\", // LAM\n \"llam\", // LLAM\n \"fix\", // FIX\n */\n //\n 'let',\n //\n 'local',\n //\n 'macdef',\n 'macrodef',\n //\n 'nonfix',\n //\n 'symelim',\n 'symintr',\n 'overload',\n //\n 'of',\n 'op',\n //\n 'rec',\n //\n 'sif',\n 'scase',\n //\n 'sortdef',\n /*\n // HX: [sta] is now deprecated\n */\n 'sta',\n 'stacst',\n 'stadef',\n 'static',\n /*\n \"stavar\", // T_STAVAR\n */\n //\n 'staload',\n 'dynload',\n //\n 'try',\n //\n 'tkindef',\n //\n /*\n \"type\", // TYPE\n */\n 'typedef',\n 'propdef',\n 'viewdef',\n 'vtypedef',\n 'viewtypedef',\n //\n /*\n \"val\", // VAL\n */\n 'prval',\n //\n 'var',\n 'prvar',\n //\n 'when',\n 'where',\n //\n /*\n \"for\", // T_FOR\n \"while\", // T_WHILE\n */\n //\n 'with',\n //\n 'withtype',\n 'withprop',\n 'withview',\n 'withvtype',\n 'withviewtype' // WITHVIEWTYPE\n //\n ],\n keywords_dlr: [\n '$delay',\n '$ldelay',\n //\n '$arrpsz',\n '$arrptrsize',\n //\n '$d2ctype',\n //\n '$effmask',\n '$effmask_ntm',\n '$effmask_exn',\n '$effmask_ref',\n '$effmask_wrt',\n '$effmask_all',\n //\n '$extern',\n '$extkind',\n '$extype',\n '$extype_struct',\n //\n '$extval',\n '$extfcall',\n '$extmcall',\n //\n '$literal',\n //\n '$myfilename',\n '$mylocation',\n '$myfunction',\n //\n '$lst',\n '$lst_t',\n '$lst_vt',\n '$list',\n '$list_t',\n '$list_vt',\n //\n '$rec',\n '$rec_t',\n '$rec_vt',\n '$record',\n '$record_t',\n '$record_vt',\n //\n '$tup',\n '$tup_t',\n '$tup_vt',\n '$tuple',\n '$tuple_t',\n '$tuple_vt',\n //\n '$break',\n '$continue',\n //\n '$raise',\n //\n '$showtype',\n //\n '$vcopyenv_v',\n '$vcopyenv_vt',\n //\n '$tempenver',\n //\n '$solver_assert',\n '$solver_verify' // T_DLRSOLVERIFY\n ],\n keywords_srp: [\n //\n '#if',\n '#ifdef',\n '#ifndef',\n //\n '#then',\n //\n '#elif',\n '#elifdef',\n '#elifndef',\n //\n '#else',\n '#endif',\n //\n '#error',\n //\n '#prerr',\n '#print',\n //\n '#assert',\n //\n '#undef',\n '#define',\n //\n '#include',\n '#require',\n //\n '#pragma',\n '#codegen2',\n '#codegen3' // T_SRPCODEGEN3 // for level-3 codegen\n //\n // HX: end of special tokens\n //\n ],\n irregular_keyword_list: [\n 'val+',\n 'val-',\n 'val',\n 'case+',\n 'case-',\n 'case',\n 'addr@',\n 'addr',\n 'fold@',\n 'free@',\n 'fix@',\n 'fix',\n 'lam@',\n 'lam',\n 'llam@',\n 'llam',\n 'viewt@ype+',\n 'viewt@ype-',\n 'viewt@ype',\n 'viewtype+',\n 'viewtype-',\n 'viewtype',\n 'view+',\n 'view-',\n 'view@',\n 'view',\n 'type+',\n 'type-',\n 'type',\n 'vtype+',\n 'vtype-',\n 'vtype',\n 'vt@ype+',\n 'vt@ype-',\n 'vt@ype',\n 'viewt@ype+',\n 'viewt@ype-',\n 'viewt@ype',\n 'viewtype+',\n 'viewtype-',\n 'viewtype',\n 'prop+',\n 'prop-',\n 'prop',\n 'type+',\n 'type-',\n 'type',\n 't@ype',\n 't@ype+',\n 't@ype-',\n 'abst@ype',\n 'abstype',\n 'absviewt@ype',\n 'absvt@ype',\n 'for*',\n 'for',\n 'while*',\n 'while'\n ],\n keywords_types: [\n 'bool',\n 'double',\n 'byte',\n 'int',\n 'short',\n 'char',\n 'void',\n 'unit',\n 'long',\n 'float',\n 'string',\n 'strptr'\n ],\n // TODO: reference for this?\n keywords_effects: [\n '0',\n 'fun',\n 'clo',\n 'prf',\n 'funclo',\n 'cloptr',\n 'cloref',\n 'ref',\n 'ntm',\n '1' // all effects\n ],\n operators: [\n '@',\n '!',\n '|',\n '`',\n ':',\n '$',\n '.',\n '=',\n '#',\n '~',\n //\n '..',\n '...',\n //\n '=>',\n // \"=<\", // T_EQLT\n '=<>',\n '=/=>',\n '=>>',\n '=/=>>',\n //\n '<',\n '>',\n //\n '><',\n //\n '.<',\n '>.',\n //\n '.<>.',\n //\n '->',\n //\"-<\", // T_MINUSLT\n '-<>' // T_MINUSLTGT\n //\n /*\n \":<\", // T_COLONLT\n */\n ],\n brackets: [\n { open: ',(', close: ')', token: 'delimiter.parenthesis' },\n { open: '`(', close: ')', token: 'delimiter.parenthesis' },\n { open: '%(', close: ')', token: 'delimiter.parenthesis' },\n { open: \"'(\", close: ')', token: 'delimiter.parenthesis' },\n { open: \"'{\", close: '}', token: 'delimiter.parenthesis' },\n { open: '@(', close: ')', token: 'delimiter.parenthesis' },\n { open: '@{', close: '}', token: 'delimiter.brace' },\n { open: '@[', close: ']', token: 'delimiter.square' },\n { open: '#[', close: ']', token: 'delimiter.square' },\n { open: '{', close: '}', token: 'delimiter.curly' },\n { open: '[', close: ']', token: 'delimiter.square' },\n { open: '(', close: ')', token: 'delimiter.parenthesis' },\n { open: '<', close: '>', token: 'delimiter.angle' }\n ],\n // we include these common regular expressions\n symbols: /[=><!~?:&|+\\-*\\/\\^%]+/,\n IDENTFST: /[a-zA-Z_]/,\n IDENTRST: /[a-zA-Z0-9_'$]/,\n symbolic: /[%&+-./:=@~`^|*!$#?<>]/,\n digit: /[0-9]/,\n digitseq0: /@digit*/,\n xdigit: /[0-9A-Za-z]/,\n xdigitseq0: /@xdigit*/,\n INTSP: /[lLuU]/,\n FLOATSP: /[fFlL]/,\n fexponent: /[eE][+-]?[0-9]+/,\n fexponent_bin: /[pP][+-]?[0-9]+/,\n deciexp: /\\.[0-9]*@fexponent?/,\n hexiexp: /\\.[0-9a-zA-Z]*@fexponent_bin?/,\n irregular_keywords: /val[+-]?|case[+-]?|addr\\@?|fold\\@|free\\@|fix\\@?|lam\\@?|llam\\@?|prop[+-]?|type[+-]?|view[+-@]?|viewt@?ype[+-]?|t@?ype[+-]?|v(iew)?t@?ype[+-]?|abst@?ype|absv(iew)?t@?ype|for\\*?|while\\*?/,\n ESCHAR: /[ntvbrfa\\\\\\?'\"\\(\\[\\{]/,\n start: 'root',\n // The main tokenizer for ATS/Postiats\n // reference: https://github.com/githwxi/ATS-Postiats/blob/master/src/pats_lexing.dats\n tokenizer: {\n root: [\n // lexing_blankseq0\n { regex: /[ \\t\\r\\n]+/, action: { token: '' } },\n // NOTE: (*) is an invalid ML-like comment!\n { regex: /\\(\\*\\)/, action: { token: 'invalid' } },\n {\n regex: /\\(\\*/,\n action: { token: 'comment', next: 'lexing_COMMENT_block_ml' }\n },\n {\n regex: /\\(/,\n action: '@brackets' /*{ token: 'delimiter.parenthesis' }*/\n },\n {\n regex: /\\)/,\n action: '@brackets' /*{ token: 'delimiter.parenthesis' }*/\n },\n {\n regex: /\\[/,\n action: '@brackets' /*{ token: 'delimiter.bracket' }*/\n },\n {\n regex: /\\]/,\n action: '@brackets' /*{ token: 'delimiter.bracket' }*/\n },\n {\n regex: /\\{/,\n action: '@brackets' /*{ token: 'delimiter.brace' }*/\n },\n {\n regex: /\\}/,\n action: '@brackets' /*{ token: 'delimiter.brace' }*/\n },\n // lexing_COMMA\n {\n regex: /,\\(/,\n action: '@brackets' /*{ token: 'delimiter.parenthesis' }*/\n },\n { regex: /,/, action: { token: 'delimiter.comma' } },\n { regex: /;/, action: { token: 'delimiter.semicolon' } },\n // lexing_AT\n {\n regex: /@\\(/,\n action: '@brackets' /* { token: 'delimiter.parenthesis' }*/\n },\n {\n regex: /@\\[/,\n action: '@brackets' /* { token: 'delimiter.bracket' }*/\n },\n {\n regex: /@\\{/,\n action: '@brackets' /*{ token: 'delimiter.brace' }*/\n },\n // lexing_COLON\n {\n regex: /:</,\n action: { token: 'keyword', next: '@lexing_EFFECT_commaseq0' }\n },\n /*\n lexing_DOT:\n\n . // SYMBOLIC => lexing_IDENT_sym\n . FLOATDOT => lexing_FLOAT_deciexp\n . DIGIT => T_DOTINT\n */\n { regex: /\\.@symbolic+/, action: { token: 'identifier.sym' } },\n // FLOATDOT case\n {\n regex: /\\.@digit*@fexponent@FLOATSP*/,\n action: { token: 'number.float' }\n },\n { regex: /\\.@digit+/, action: { token: 'number.float' } },\n // lexing_DOLLAR:\n // '$' IDENTFST IDENTRST* => lexing_IDENT_dlr, _ => lexing_IDENT_sym\n {\n regex: /\\$@IDENTFST@IDENTRST*/,\n action: {\n cases: {\n '@keywords_dlr': { token: 'keyword.dlr' },\n '@default': { token: 'namespace' } // most likely a module qualifier\n }\n }\n },\n // lexing_SHARP:\n // '#' IDENTFST IDENTRST* => lexing_ident_srp, _ => lexing_IDENT_sym\n {\n regex: /\\#@IDENTFST@IDENTRST*/,\n action: {\n cases: {\n '@keywords_srp': { token: 'keyword.srp' },\n '@default': { token: 'identifier' }\n }\n }\n },\n // lexing_PERCENT:\n { regex: /%\\(/, action: { token: 'delimiter.parenthesis' } },\n {\n regex: /^%{(#|\\^|\\$)?/,\n action: {\n token: 'keyword',\n next: '@lexing_EXTCODE',\n nextEmbedded: 'text/javascript'\n }\n },\n { regex: /^%}/, action: { token: 'keyword' } },\n // lexing_QUOTE\n { regex: /'\\(/, action: { token: 'delimiter.parenthesis' } },\n { regex: /'\\[/, action: { token: 'delimiter.bracket' } },\n { regex: /'\\{/, action: { token: 'delimiter.brace' } },\n [/(')(\\\\@ESCHAR|\\\\[xX]@xdigit+|\\\\@digit+)(')/, ['string', 'string.escape', 'string']],\n [/'[^\\\\']'/, 'string'],\n // lexing_DQUOTE\n [/\"/, 'string.quote', '@lexing_DQUOTE'],\n // lexing_BQUOTE\n {\n regex: /`\\(/,\n action: '@brackets' /* { token: 'delimiter.parenthesis' }*/\n },\n // TODO: otherwise, try lexing_IDENT_sym\n { regex: /\\\\/, action: { token: 'punctuation' } },\n // lexing_IDENT_alp:\n // NOTE: (?!regex) is syntax for \"not-followed-by\" regex\n // to resolve ambiguity such as foreach$fwork being incorrectly lexed as [for] [each$fwork]!\n {\n regex: /@irregular_keywords(?!@IDENTRST)/,\n action: { token: 'keyword' }\n },\n {\n regex: /@IDENTFST@IDENTRST*[<!\\[]?/,\n action: {\n cases: {\n // TODO: dynload and staload should be specially parsed\n // dynload whitespace+ \"special_string\"\n // this special string is really:\n // '/' '\\\\' '.' => punctuation\n // ({\\$)([a-zA-Z_][a-zA-Z_0-9]*)(}) => punctuation,keyword,punctuation\n // [^\"] => identifier/literal\n '@keywords': { token: 'keyword' },\n '@keywords_types': { token: 'type' },\n '@default': { token: 'identifier' }\n }\n }\n },\n // lexing_IDENT_sym:\n {\n regex: /\\/\\/\\/\\//,\n action: { token: 'comment', next: '@lexing_COMMENT_rest' }\n },\n { regex: /\\/\\/.*$/, action: { token: 'comment' } },\n {\n regex: /\\/\\*/,\n action: { token: 'comment', next: '@lexing_COMMENT_block_c' }\n },\n // AS-20160627: specifically for effect annotations\n {\n regex: /-<|=</,\n action: { token: 'keyword', next: '@lexing_EFFECT_commaseq0' }\n },\n {\n regex: /@symbolic+/,\n action: {\n cases: {\n '@operators': 'keyword',\n '@default': 'operator'\n }\n }\n },\n // lexing_ZERO:\n // FIXME: this one is quite messy/unfinished yet\n // TODO: lexing_INT_hex\n // - testing_hexiexp => lexing_FLOAT_hexiexp\n // - testing_fexponent_bin => lexing_FLOAT_hexiexp\n // - testing_intspseq0 => T_INT_hex\n // lexing_INT_hex:\n {\n regex: /0[xX]@xdigit+(@hexiexp|@fexponent_bin)@FLOATSP*/,\n action: { token: 'number.float' }\n },\n { regex: /0[xX]@xdigit+@INTSP*/, action: { token: 'number.hex' } },\n {\n regex: /0[0-7]+(?![0-9])@INTSP*/,\n action: { token: 'number.octal' }\n },\n //{regex: /0/, action: { token: 'number' } }, // INTZERO\n // lexing_INT_dec:\n // - testing_deciexp => lexing_FLOAT_deciexp\n // - testing_fexponent => lexing_FLOAT_deciexp\n // - otherwise => intspseq0 ([0-9]*[lLuU]?)\n {\n regex: /@digit+(@fexponent|@deciexp)@FLOATSP*/,\n action: { token: 'number.float' }\n },\n {\n regex: /@digit@digitseq0@INTSP*/,\n action: { token: 'number.decimal' }\n },\n // DIGIT, if followed by digitseq0, is lexing_INT_dec\n { regex: /@digit+@INTSP*/, action: { token: 'number' } }\n ],\n lexing_COMMENT_block_ml: [\n [/[^\\(\\*]+/, 'comment'],\n [/\\(\\*/, 'comment', '@push'],\n [/\\(\\*/, 'comment.invalid'],\n [/\\*\\)/, 'comment', '@pop'],\n [/\\*/, 'comment']\n ],\n lexing_COMMENT_block_c: [\n [/[^\\/*]+/, 'comment'],\n // [/\\/\\*/, 'comment', '@push' ], // nested C-style block comments not allowed\n // [/\\/\\*/, 'comment.invalid' ],\t// NOTE: this breaks block comments in the shape of /* //*/\n [/\\*\\//, 'comment', '@pop'],\n [/[\\/*]/, 'comment']\n ],\n lexing_COMMENT_rest: [\n [/$/, 'comment', '@pop'],\n [/.*/, 'comment']\n ],\n // NOTE: added by AS, specifically for highlighting\n lexing_EFFECT_commaseq0: [\n {\n regex: /@IDENTFST@IDENTRST+|@digit+/,\n action: {\n cases: {\n '@keywords_effects': { token: 'type.effect' },\n '@default': { token: 'identifier' }\n }\n }\n },\n { regex: /,/, action: { token: 'punctuation' } },\n { regex: />/, action: { token: '@rematch', next: '@pop' } }\n ],\n lexing_EXTCODE: [\n {\n regex: /^%}/,\n action: {\n token: '@rematch',\n next: '@pop',\n nextEmbedded: '@pop'\n }\n },\n { regex: /[^%]+/, action: '' }\n ],\n lexing_DQUOTE: [\n { regex: /\"/, action: { token: 'string.quote', next: '@pop' } },\n // AS-20160628: additional hi-lighting for variables in staload/dynload strings\n {\n regex: /(\\{\\$)(@IDENTFST@IDENTRST*)(\\})/,\n action: [\n { token: 'string.escape' },\n { token: 'identifier' },\n { token: 'string.escape' }\n ]\n },\n { regex: /\\\\$/, action: { token: 'string.escape' } },\n {\n regex: /\\\\(@ESCHAR|[xX]@xdigit+|@digit+)/,\n action: { token: 'string.escape' }\n },\n { regex: /[^\\\\\"]+/, action: { token: 'string' } }\n ]\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzUyNTcuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFdBQVcsS0FBSztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxxREFBcUQ7QUFDL0QsVUFBVSxRQUFRLFlBQVksaUNBQWlDO0FBQy9ELFVBQVUscURBQXFEO0FBQy9ELFVBQVU7QUFDVjtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EsYUFBYSxZQUFZO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLHdEQUF3RDtBQUNsRSxVQUFVLHdEQUF3RDtBQUNsRSxVQUFVLHdEQUF3RDtBQUNsRSxVQUFVLHdEQUF3RDtBQUNsRSxVQUFVLFNBQVMsWUFBWSxtQ0FBbUM7QUFDbEUsVUFBVSx3REFBd0Q7QUFDbEUsVUFBVSxTQUFTLFlBQVksNkJBQTZCO0FBQzVELFVBQVUsbURBQW1EO0FBQzdELFVBQVUsbURBQW1EO0FBQzdELFVBQVUsUUFBUSxZQUFZLDZCQUE2QjtBQUMzRCxVQUFVLGtEQUFrRDtBQUM1RCxVQUFVLHVEQUF1RDtBQUNqRSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtCQUErQixhQUFhO0FBQzFEO0FBQ0EsY0FBYywyQkFBMkIsb0JBQW9CO0FBQzdEO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsYUFBYTtBQUNiO0FBQ0E7QUFDQSx3Q0FBd0MsZ0NBQWdDO0FBQ3hFLGFBQWE7QUFDYjtBQUNBO0FBQ0Esd0NBQXdDLGdDQUFnQztBQUN4RSxhQUFhO0FBQ2I7QUFDQTtBQUNBLHdDQUF3Qyw0QkFBNEI7QUFDcEUsYUFBYTtBQUNiO0FBQ0E7QUFDQSx3Q0FBd0MsNEJBQTRCO0FBQ3BFLGFBQWE7QUFDYjtBQUNBLDBCQUEwQjtBQUMxQix3Q0FBd0MsMEJBQTBCO0FBQ2xFLGFBQWE7QUFDYjtBQUNBLDBCQUEwQjtBQUMxQix3Q0FBd0MsMEJBQTBCO0FBQ2xFLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsZ0NBQWdDO0FBQ3hFLGFBQWE7QUFDYixjQUFjLHNCQUFzQiw0QkFBNEI7QUFDaEUsY0FBYyxTQUFTLGFBQWEsZ0NBQWdDO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxnQ0FBZ0M7QUFDekUsYUFBYTtBQUNiO0FBQ0E7QUFDQSx5Q0FBeUMsNEJBQTRCO0FBQ3JFLGFBQWE7QUFDYjtBQUNBLDJCQUEyQjtBQUMzQix3Q0FBd0MsMEJBQTBCO0FBQ2xFLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsYUFBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLGlDQUFpQywyQkFBMkI7QUFDMUU7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLGFBQWE7QUFDYixjQUFjLDhCQUE4Qix5QkFBeUI7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLHNCQUFzQjtBQUNqRSxzQ0FBc0MscUJBQXFCO0FBQzNEO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLHNCQUFzQjtBQUNqRSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGNBQWMsd0JBQXdCLGtDQUFrQztBQUN4RTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLGNBQWMsV0FBVyxhQUFhLG9CQUFvQjtBQUMxRDtBQUNBLGNBQWMsd0JBQXdCLGtDQUFrQztBQUN4RSxjQUFjLHdCQUF3Qiw4QkFBOEI7QUFDcEUsY0FBYyxXQUFXLGFBQWEsNEJBQTRCO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLGdDQUFnQztBQUN6RSxhQUFhO0FBQ2I7QUFDQSxjQUFjLHVCQUF1Qix3QkFBd0I7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw2QkFBNkI7QUFDMUQ7QUFDQSx1Q0FBdUMsa0JBQWtCO0FBQ3pELDZDQUE2QyxlQUFlO0FBQzVELHNDQUFzQztBQUN0QztBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQixhQUFhO0FBQ2IsY0FBYyw0QkFBNEIsb0JBQW9CO0FBQzlEO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsYUFBYTtBQUNiLGNBQWMseUNBQXlDLHVCQUF1QjtBQUM5RTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLGFBQWE7QUFDYixlQUFlLHNCQUFzQixtQkFBbUI7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLGFBQWE7QUFDYjtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLGFBQWE7QUFDYjtBQUNBLGNBQWMsbUNBQW1DO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLHNCQUFzQjtBQUNyRSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBLGFBQWE7QUFDYixjQUFjLHNCQUFzQix3QkFBd0I7QUFDNUQsY0FBYyxzQkFBc0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsY0FBYztBQUNkO0FBQ0E7QUFDQSxjQUFjLHNCQUFzQix1Q0FBdUM7QUFDM0U7QUFDQTtBQUNBLDJCQUEyQiwyQkFBMkI7QUFDdEQ7QUFDQSxzQkFBc0Isd0JBQXdCO0FBQzlDLHNCQUFzQixxQkFBcUI7QUFDM0Msc0JBQXNCO0FBQ3RCO0FBQ0EsYUFBYTtBQUNiLGNBQWMsd0JBQXdCLDBCQUEwQjtBQUNoRTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLGFBQWE7QUFDYixjQUFjLDRCQUE0QjtBQUMxQztBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uLy4uL25vZGVfbW9kdWxlcy9tb25hY28tZWRpdG9yL2VzbS92cy9iYXNpYy1sYW5ndWFnZXMvcG9zdGlhdHMvcG9zdGlhdHMuanM/OTg3MiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogIENvcHlyaWdodCAoYykgQXJ0eW9tIFNoYWxraGFrb3YuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiAgQmFzZWQgb24gdGhlIEFUUy9Qb3N0aWF0cyBsZXhlciBieSBIb25nd2VpIFhpLlxuICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5leHBvcnQgdmFyIGNvbmYgPSB7XG4gICAgY29tbWVudHM6IHtcbiAgICAgICAgbGluZUNvbW1lbnQ6ICcvLycsXG4gICAgICAgIGJsb2NrQ29tbWVudDogWycoKicsICcqKSddXG4gICAgfSxcbiAgICBicmFja2V0czogW1xuICAgICAgICBbJ3snLCAnfSddLFxuICAgICAgICBbJ1snLCAnXSddLFxuICAgICAgICBbJygnLCAnKSddLFxuICAgICAgICBbJzwnLCAnPiddXG4gICAgXSxcbiAgICBhdXRvQ2xvc2luZ1BhaXJzOiBbXG4gICAgICAgIHsgb3BlbjogJ1wiJywgY2xvc2U6ICdcIicsIG5vdEluOiBbJ3N0cmluZycsICdjb21tZW50J10gfSxcbiAgICAgICAgeyBvcGVuOiAneycsIGNsb3NlOiAnfScsIG5vdEluOiBbJ3N0cmluZycsICdjb21tZW50J10gfSxcbiAgICAgICAgeyBvcGVuOiAnWycsIGNsb3NlOiAnXScsIG5vdEluOiBbJ3N0cmluZycsICdjb21tZW50J10gfSxcbiAgICAgICAgeyBvcGVuOiAnKCcsIGNsb3NlOiAnKScsIG5vdEluOiBbJ3N0cmluZycsICdjb21tZW50J10gfVxuICAgIF1cbn07XG5leHBvcnQgdmFyIGxhbmd1YWdlID0ge1xuICAgIHRva2VuUG9zdGZpeDogJy5wYXRzJyxcbiAgICAvLyBUT0RPOiBzdGFsb2FkIGFuZCBkeW5sb2FkIGFyZSBmb2xsb3dlZCBieSBhIHNwZWNpYWwga2luZCBvZiBzdHJpbmcgbGl0ZXJhbHNcbiAgICAvLyB3aXRoIHskSURFTlRJRkVSfSB2YXJpYWJsZXMsIGFuZCBpdCBhbHNvIG1heSBtYWtlIHNlbnNlIHRvIGhpZ2hsaWdodFxuICAgIC8vIHRoZSBwdW5jdHVhdGlvbiAoLiBhbmQgLyBhbmQgXFwpIGRpZmZlcmVudGx5LlxuICAgIC8vIFNldCBkZWZhdWx0VG9rZW4gdG8gaW52YWxpZCB0byBzZWUgd2hhdCB5b3UgZG8gbm90IHRva2VuaXplIHlldFxuICAgIGRlZmF1bHRUb2tlbjogJ2ludmFsaWQnLFxuICAgIC8vIGtleXdvcmQgcmVmZXJlbmNlOiBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHd4aS9BVFMtUG9zdGlhdHMvYmxvYi9tYXN0ZXIvc3JjL3BhdHNfbGV4aW5nX3Rva2VuLmRhdHNcbiAgICBrZXl3b3JkczogW1xuICAgICAgICAvL1xuICAgICAgICAnYWJzdHlwZScsXG4gICAgICAgICdhYnN0MHlwZScsXG4gICAgICAgICdhYnNwcm9wJyxcbiAgICAgICAgJ2Fic3ZpZXcnLFxuICAgICAgICAnYWJzdnR5cGUnLFxuICAgICAgICAnYWJzdmlld3R5cGUnLFxuICAgICAgICAnYWJzdnQweXBlJyxcbiAgICAgICAgJ2Fic3ZpZXd0MHlwZScsXG4gICAgICAgIC8vXG4gICAgICAgICdhcycsXG4gICAgICAgIC8vXG4gICAgICAgICdhbmQnLFxuICAgICAgICAvL1xuICAgICAgICAnYXNzdW1lJyxcbiAgICAgICAgLy9cbiAgICAgICAgJ2JlZ2luJyxcbiAgICAgICAgLy9cbiAgICAgICAgLypcbiAgICAgICAgICAgICAgICBcImNhc2VcIiwgLy8gQ0FTRVxuICAgICAgICAqL1xuICAgICAgICAvL1xuICAgICAgICAnY2xhc3NkZWMnLFxuICAgICAgICAvL1xuICAgICAgICAnZGF0YXNvcnQnLFxuICAgICAgICAvL1xuICAgICAgICAnZGF0YXR5cGUnLFxuICAgICAgICAnZGF0YXByb3AnLFxuICAgICAgICAnZGF0YXZpZXcnLFxuICAgICAgICAnZGF0YXZ0eXBlJyxcbiAgICAgICAgJ2RhdGF2aWV3dHlwZScsXG4gICAgICAgIC8vXG4gICAgICAgICdkbycsXG4gICAgICAgIC8vXG4gICAgICAgICdlbmQnLFxuICAgICAgICAvL1xuICAgICAgICAnZXh0ZXJuJyxcbiAgICAgICAgJ2V4dHlwZScsXG4gICAgICAgICdleHR2YXInLFxuICAgICAgICAvL1xuICAgICAgICAnZXhjZXB0aW9uJyxcbiAgICAgICAgLy9cbiAgICAgICAgJ2ZuJyxcbiAgICAgICAgJ2ZueCcsXG4gICAgICAgICdmdW4nLFxuICAgICAgICAvL1xuICAgICAgICAncHJmbicsXG4gICAgICAgICdwcmZ1bicsXG4gICAgICAgIC8vXG4gICAgICAgICdwcmF4aScsXG4gICAgICAgICdjYXN0Zm4nLFxuICAgICAgICAvL1xuICAgICAgICAnaWYnLFxuICAgICAgICAndGhlbicsXG4gICAgICAgICdlbHNlJyxcbiAgICAgICAgLy9cbiAgICAgICAgJ2lmY2FzZScsXG4gICAgICAgIC8vXG4gICAgICAgICdpbicsXG4gICAgICAgIC8vXG4gICAgICAgICdpbmZpeCcsXG4gICAgICAgICdpbmZpeGwnLFxuICAgICAgICAnaW5maXhyJyxcbiAgICAgICAgJ3ByZWZpeCcsXG4gICAgICAgICdwb3N0Zml4JyxcbiAgICAgICAgLy9cbiAgICAgICAgJ2ltcGxtbnQnLFxuICAgICAgICAnaW1wbGVtZW50JyxcbiAgICAgICAgLy9cbiAgICAgICAgJ3ByaW1wbG1udCcsXG4gICAgICAgICdwcmltcGxlbWVudCcsXG4gICAgICAgIC8vXG4gICAgICAgICdpbXBvcnQnLFxuICAgICAgICAvL1xuICAgICAgICAvKlxuICAgICAgICAgICAgICAgIFwibGFtXCIsIC8vIExBTVxuICAgICAgICAgICAgICAgIFwibGxhbVwiLCAvLyBMTEFNXG4gICAgICAgICAgICAgICAgXCJmaXhcIiwgLy8gRklYXG4gICAgICAgICovXG4gICAgICAgIC8vXG4gICAgICAgICdsZXQnLFxuICAgICAgICAvL1xuICAgICAgICAnbG9jYWwnLFxuICAgICAgICAvL1xuICAgICAgICAnbWFjZGVmJyxcbiAgICAgICAgJ21hY3JvZGVmJyxcbiAgICAgICAgLy9cbiAgICAgICAgJ25vbmZpeCcsXG4gICAgICAgIC8vXG4gICAgICAgICdzeW1lbGltJyxcbiAgICAgICAgJ3N5bWludHInLFxuICAgICAgICAnb3ZlcmxvYWQnLFxuICAgICAgICAvL1xuICAgICAgICAnb2YnLFxuICAgICAgICAnb3AnLFxuICAgICAgICAvL1xuICAgICAgICAncmVjJyxcbiAgICAgICAgLy9cbiAgICAgICAgJ3NpZicsXG4gICAgICAgICdzY2FzZScsXG4gICAgICAgIC8vXG4gICAgICAgICdzb3J0ZGVmJyxcbiAgICAgICAgLypcbiAgICAgICAgLy8gSFg6IFtzdGFdIGlzIG5vdyBkZXByZWNhdGVkXG4gICAgICAgICovXG4gICAgICAgICdzdGEnLFxuICAgICAgICAnc3RhY3N0JyxcbiAgICAgICAgJ3N0YWRlZicsXG4gICAgICAgICdzdGF0aWMnLFxuICAgICAgICAvKlxuICAgICAgICAgICAgICAgIFwic3RhdmFyXCIsIC8vIFRfU1RBVkFSXG4gICAgICAgICovXG4gICAgICAgIC8vXG4gICAgICAgICdzdGFsb2FkJyxcbiAgICAgICAgJ2R5bmxvYWQnLFxuICAgICAgICAvL1xuICAgICAgICAndHJ5JyxcbiAgICAgICAgLy9cbiAgICAgICAgJ3RraW5kZWYnLFxuICAgICAgICAvL1xuICAgICAgICAvKlxuICAgICAgICAgICAgICAgIFwidHlwZVwiLCAvLyBUWVBFXG4gICAgICAgICovXG4gICAgICAgICd0eXBlZGVmJyxcbiAgICAgICAgJ3Byb3BkZWYnLFxuICAgICAgICAndmlld2RlZicsXG4gICAgICAgICd2dHlwZWRlZicsXG4gICAgICAgICd2aWV3dHlwZWRlZicsXG4gICAgICAgIC8vXG4gICAgICAgIC8qXG4gICAgICAgICAgICAgICAgXCJ2YWxcIiwgLy8gVkFMXG4gICAgICAgICovXG4gICAgICAgICdwcnZhbCcsXG4gICAgICAgIC8vXG4gICAgICAgICd2YXInLFxuICAgICAgICAncHJ2YXInLFxuICAgICAgICAvL1xuICAgICAgICAnd2hlbicsXG4gICAgICAgICd3aGVyZScsXG4gICAgICAgIC8vXG4gICAgICAgIC8qXG4gICAgICAgICAgICAgICAgXCJmb3JcIiwgLy8gVF9GT1JcbiAgICAgICAgICAgICAgICBcIndoaWxlXCIsIC8vIFRfV0hJTEVcbiAgICAgICAgKi9cbiAgICAgICAgLy9cbiAgICAgICAgJ3dpdGgnLFxuICAgICAgICAvL1xuICAgICAgICAnd2l0aHR5cGUnLFxuICAgICAgICAnd2l0aHByb3AnLFxuICAgICAgICAnd2l0aHZpZXcnLFxuICAgICAgICAnd2l0aHZ0eXBlJyxcbiAgICAgICAgJ3dpdGh2aWV3dHlwZScgLy8gV0lUSFZJRVdUWVBFXG4gICAgICAgIC8vXG4gICAgXSxcbiAgICBrZXl3b3Jkc19kbHI6IFtcbiAgICAgICAgJyRkZWxheScsXG4gICAgICAgICckbGRlbGF5JyxcbiAgICAgICAgLy9cbiAgICAgICAgJyRhcnJwc3onLFxuICAgICAgICAnJGFycnB0cnNpemUnLFxuICAgICAgICAvL1xuICAgICAgICAnJGQyY3R5cGUnLFxuICAgICAgICAvL1xuICAgICAgICAnJGVmZm1hc2snLFxuICAgICAgICAnJGVmZm1hc2tfbnRtJyxcbiAgICAgICAgJyRlZmZtYXNrX2V4bicsXG4gICAgICAgICckZWZmbWFza19yZWYnLFxuICAgICAgICAnJGVmZm1hc2tfd3J0JyxcbiAgICAgICAgJyRlZmZtYXNrX2FsbCcsXG4gICAgICAgIC8vXG4gICAgICAgICckZXh0ZXJuJyxcbiAgICAgICAgJyRleHRraW5kJyxcbiAgICAgICAgJyRleHR5cGUnLFxuICAgICAgICAnJGV4dHlwZV9zdHJ1Y3QnLFxuICAgICAgICAvL1xuICAgICAgICAnJGV4dHZhbCcsXG4gICAgICAgICckZXh0ZmNhbGwnLFxuICAgICAgICAnJGV4dG1jYWxsJyxcbiAgICAgICAgLy9cbiAgICAgICAgJyRsaXRlcmFsJyxcbiAgICAgICAgLy9cbiAgICAgICAgJyRteWZpbGVuYW1lJyxcbiAgICAgICAgJyRteWxvY2F0aW9uJyxcbiAgICAgICAgJyRteWZ1bmN0aW9uJyxcbiAgICAgICAgLy9cbiAgICAgICAgJyRsc3QnLFxuICAgICAgICAnJGxzdF90JyxcbiAgICAgICAgJyRsc3RfdnQnLFxuICAgICAgICAnJGxpc3QnLFxuICAgICAgICAnJGxpc3RfdCcsXG4gICAgICAgICckbGlzdF92dCcsXG4gICAgICAgIC8vXG4gICAgICAgICckcmVjJyxcbiAgICAgICAgJyRyZWNfdCcsXG4gICAgICAgICckcmVjX3Z0JyxcbiAgICAgICAgJyRyZWNvcmQnLFxuICAgICAgICAnJHJlY29yZF90JyxcbiAgICAgICAgJyRyZWNvcmRfdnQnLFxuICAgICAgICAvL1xuICAgICAgICAnJHR1cCcsXG4gICAgICAgICckdHVwX3QnLFxuICAgICAgICAnJHR1cF92dCcsXG4gICAgICAgICckdHVwbGUnLFxuICAgICAgICAnJHR1cGxlX3QnLFxuICAgICAgICAnJHR1cGxlX3Z0JyxcbiAgICAgICAgLy9cbiAgICAgICAgJyRicmVhaycsXG4gICAgICAgICckY29udGludWUnLFxuICAgICAgICAvL1xuICAgICAgICAnJHJhaXNlJyxcbiAgICAgICAgLy9cbiAgICAgICAgJyRzaG93dHlwZScsXG4gICAgICAgIC8vXG4gICAgICAgICckdmNvcHllbnZfdicsXG4gICAgICAgICckdmNvcHllbnZfdnQnLFxuICAgICAgICAvL1xuICAgICAgICAnJHRlbXBlbnZlcicsXG4gICAgICAgIC8vXG4gICAgICAgICckc29sdmVyX2Fzc2VydCcsXG4gICAgICAgICckc29sdmVyX3ZlcmlmeScgLy8gVF9ETFJTT0xWRVJJRllcbiAgICBdLFxuICAgIGtleXdvcmRzX3NycDogW1xuICAgICAgICAvL1xuICAgICAgICAnI2lmJyxcbiAgICAgICAgJyNpZmRlZicsXG4gICAgICAgICcjaWZuZGVmJyxcbiAgICAgICAgLy9cbiAgICAgICAgJyN0aGVuJyxcbiAgICAgICAgLy9cbiAgICAgICAgJyNlbGlmJyxcbiAgICAgICAgJyNlbGlmZGVmJyxcbiAgICAgICAgJyNlbGlmbmRlZicsXG4gICAgICAgIC8vXG4gICAgICAgICcjZWxzZScsXG4gICAgICAgICcjZW5kaWYnLFxuICAgICAgICAvL1xuICAgICAgICAnI2Vycm9yJyxcbiAgICAgICAgLy9cbiAgICAgICAgJyNwcmVycicsXG4gICAgICAgICcjcHJpbnQnLFxuICAgICAgICAvL1xuICAgICAgICAnI2Fzc2VydCcsXG4gICAgICAgIC8vXG4gICAgICAgICcjdW5kZWYnLFxuICAgICAgICAnI2RlZmluZScsXG4gICAgICAgIC8vXG4gICAgICAgICcjaW5jbHVkZScsXG4gICAgICAgICcjcmVxdWlyZScsXG4gICAgICAgIC8vXG4gICAgICAgICcjcHJhZ21hJyxcbiAgICAgICAgJyNjb2RlZ2VuMicsXG4gICAgICAgICcjY29kZWdlbjMnIC8vIFRfU1JQQ09ERUdFTjMgLy8gZm9yIGxldmVsLTMgY29kZWdlblxuICAgICAgICAvL1xuICAgICAgICAvLyBIWDogZW5kIG9mIHNwZWNpYWwgdG9rZW5zXG4gICAgICAgIC8vXG4gICAgXSxcbiAgICBpcnJlZ3VsYXJfa2V5d29yZF9saXN0OiBbXG4gICAgICAgICd2YWwrJyxcbiAgICAgICAgJ3ZhbC0nLFxuICAgICAgICAndmFsJyxcbiAgICAgICAgJ2Nhc2UrJyxcbiAgICAgICAgJ2Nhc2UtJyxcbiAgICAgICAgJ2Nhc2UnLFxuICAgICAgICAnYWRkckAnLFxuICAgICAgICAnYWRkcicsXG4gICAgICAgICdmb2xkQCcsXG4gICAgICAgICdmcmVlQCcsXG4gICAgICAgICdmaXhAJyxcbiAgICAgICAgJ2ZpeCcsXG4gICAgICAgICdsYW1AJyxcbiAgICAgICAgJ2xhbScsXG4gICAgICAgICdsbGFtQCcsXG4gICAgICAgICdsbGFtJyxcbiAgICAgICAgJ3ZpZXd0QHlwZSsnLFxuICAgICAgICAndmlld3RAeXBlLScsXG4gICAgICAgICd2aWV3dEB5cGUnLFxuICAgICAgICAndmlld3R5cGUrJyxcbiAgICAgICAgJ3ZpZXd0eXBlLScsXG4gICAgICAgICd2aWV3dHlwZScsXG4gICAgICAgICd2aWV3KycsXG4gICAgICAgICd2aWV3LScsXG4gICAgICAgICd2aWV3QCcsXG4gICAgICAgICd2aWV3JyxcbiAgICAgICAgJ3R5cGUrJyxcbiAgICAgICAgJ3R5cGUtJyxcbiAgICAgICAgJ3R5cGUnLFxuICAgICAgICAndnR5cGUrJyxcbiAgICAgICAgJ3Z0eXBlLScsXG4gICAgICAgICd2dHlwZScsXG4gICAgICAgICd2dEB5cGUrJyxcbiAgICAgICAgJ3Z0QHlwZS0nLFxuICAgICAgICAndnRAeXBlJyxcbiAgICAgICAgJ3ZpZXd0QHlwZSsnLFxuICAgICAgICAndmlld3RAeXBlLScsXG4gICAgICAgICd2aWV3dEB5cGUnLFxuICAgICAgICAndmlld3R5cGUrJyxcbiAgICAgICAgJ3ZpZXd0eXBlLScsXG4gICAgICAgICd2aWV3dHlwZScsXG4gICAgICAgICdwcm9wKycsXG4gICAgICAgICdwcm9wLScsXG4gICAgICAgICdwcm9wJyxcbiAgICAgICAgJ3R5cGUrJyxcbiAgICAgICAgJ3R5cGUtJyxcbiAgICAgICAgJ3R5cGUnLFxuICAgICAgICAndEB5cGUnLFxuICAgICAgICAndEB5cGUrJyxcbiAgICAgICAgJ3RAeXBlLScsXG4gICAgICAgICdhYnN0QHlwZScsXG4gICAgICAgICdhYnN0eXBlJyxcbiAgICAgICAgJ2Fic3ZpZXd0QHlwZScsXG4gICAgICAgICdhYnN2dEB5cGUnLFxuICAgICAgICAnZm9yKicsXG4gICAgICAgICdmb3InLFxuICAgICAgICAnd2hpbGUqJyxcbiAgICAgICAgJ3doaWxlJ1xuICAgIF0sXG4gICAga2V5d29yZHNfdHlwZXM6IFtcbiAgICAgICAgJ2Jvb2wnLFxuICAgICAgICAnZG91YmxlJyxcbiAgICAgICAgJ2J5dGUnLFxuICAgICAgICAnaW50JyxcbiAgICAgICAgJ3Nob3J0JyxcbiAgICAgICAgJ2NoYXInLFxuICAgICAgICAndm9pZCcsXG4gICAgICAgICd1bml0JyxcbiAgICAgICAgJ2xvbmcnLFxuICAgICAgICAnZmxvYXQnLFxuICAgICAgICAnc3RyaW5nJyxcbiAgICAgICAgJ3N0cnB0cidcbiAgICBdLFxuICAgIC8vIFRPRE86IHJlZmVyZW5jZSBmb3IgdGhpcz9cbiAgICBrZXl3b3Jkc19lZmZlY3RzOiBbXG4gICAgICAgICcwJyxcbiAgICAgICAgJ2Z1bicsXG4gICAgICAgICdjbG8nLFxuICAgICAgICAncHJmJyxcbiAgICAgICAgJ2Z1bmNsbycsXG4gICAgICAgICdjbG9wdHInLFxuICAgICAgICAnY2xvcmVmJyxcbiAgICAgICAgJ3JlZicsXG4gICAgICAgICdudG0nLFxuICAgICAgICAnMScgLy8gYWxsIGVmZmVjdHNcbiAgICBdLFxuICAgIG9wZXJhdG9yczogW1xuICAgICAgICAnQCcsXG4gICAgICAgICchJyxcbiAgICAgICAgJ3wnLFxuICAgICAgICAnYCcsXG4gICAgICAgICc6JyxcbiAgICAgICAgJyQnLFxuICAgICAgICAnLicsXG4gICAgICAgICc9JyxcbiAgICAgICAgJyMnLFxuICAgICAgICAnficsXG4gICAgICAgIC8vXG4gICAgICAgICcuLicsXG4gICAgICAgICcuLi4nLFxuICAgICAgICAvL1xuICAgICAgICAnPT4nLFxuICAgICAgICAvLyBcIj08XCIsIC8vIFRfRVFMVFxuICAgICAgICAnPTw+JyxcbiAgICAgICAgJz0vPT4nLFxuICAgICAgICAnPT4+JyxcbiAgICAgICAgJz0vPT4+JyxcbiAgICAgICAgLy9cbiAgICAgICAgJzwnLFxuICAgICAgICAnPicsXG4gICAgICAgIC8vXG4gICAgICAgICc+PCcsXG4gICAgICAgIC8vXG4gICAgICAgICcuPCcsXG4gICAgICAgICc+LicsXG4gICAgICAgIC8vXG4gICAgICAgICcuPD4uJyxcbiAgICAgICAgLy9cbiAgICAgICAgJy0+JyxcbiAgICAgICAgLy9cIi08XCIsIC8vIFRfTUlOVVNMVFxuICAgICAgICAnLTw+JyAvLyBUX01JTlVTTFRHVFxuICAgICAgICAvL1xuICAgICAgICAvKlxuICAgICAgICAgICAgICAgIFwiOjxcIiwgLy8gVF9DT0xPTkxUXG4gICAgICAgICovXG4gICAgXSxcbiAgICBicmFja2V0czogW1xuICAgICAgICB7IG9wZW46ICcsKCcsIGNsb3NlOiAnKScsIHRva2VuOiAnZGVsaW1pdGVyLnBhcmVudGhlc2lzJyB9LFxuICAgICAgICB7IG9wZW46ICdgKCcsIGNsb3NlOiAnKScsIHRva2VuOiAnZGVsaW1pdGVyLnBhcmVudGhlc2lzJyB9LFxuICAgICAgICB7IG9wZW46ICclKCcsIGNsb3NlOiAnKScsIHRva2VuOiAnZGVsaW1pdGVyLnBhcmVudGhlc2lzJyB9LFxuICAgICAgICB7IG9wZW46IFwiJyhcIiwgY2xvc2U6ICcpJywgdG9rZW46ICdkZWxpbWl0ZXIucGFyZW50aGVzaXMnIH0sXG4gICAgICAgIHsgb3BlbjogXCIne1wiLCBjbG9zZTogJ30nLCB0b2tlbjogJ2RlbGltaXRlci5wYXJlbnRoZXNpcycgfSxcbiAgICAgICAgeyBvcGVuOiAnQCgnLCBjbG9zZTogJyknLCB0b2tlbjogJ2RlbGltaXRlci5wYXJlbnRoZXNpcycgfSxcbiAgICAgICAgeyBvcGVuOiAnQHsnLCBjbG9zZTogJ30nLCB0b2tlbjogJ2RlbGltaXRlci5icmFjZScgfSxcbiAgICAgICAgeyBvcGVuOiAnQFsnLCBjbG9zZTogJ10nLCB0b2tlbjogJ2RlbGltaXRlci5zcXVhcmUnIH0sXG4gICAgICAgIHsgb3BlbjogJyNbJywgY2xvc2U6ICddJywgdG9rZW46ICdkZWxpbWl0ZXIuc3F1YXJlJyB9LFxuICAgICAgICB7IG9wZW46ICd7JywgY2xvc2U6ICd9JywgdG9rZW46ICdkZWxpbWl0ZXIuY3VybHknIH0sXG4gICAgICAgIHsgb3BlbjogJ1snLCBjbG9zZTogJ10nLCB0b2tlbjogJ2RlbGltaXRlci5zcXVhcmUnIH0sXG4gICAgICAgIHsgb3BlbjogJygnLCBjbG9zZTogJyknLCB0b2tlbjogJ2RlbGltaXRlci5wYXJlbnRoZXNpcycgfSxcbiAgICAgICAgeyBvcGVuOiAnPCcsIGNsb3NlOiAnPicsIHRva2VuOiAnZGVsaW1pdGVyLmFuZ2xlJyB9XG4gICAgXSxcbiAgICAvLyB3ZSBpbmNsdWRlIHRoZXNlIGNvbW1vbiByZWd1bGFyIGV4cHJlc3Npb25zXG4gICAgc3ltYm9sczogL1s9Pjwhfj86JnwrXFwtKlxcL1xcXiVdKy8sXG4gICAgSURFTlRGU1Q6IC9bYS16QS1aX10vLFxuICAgIElERU5UUlNUOiAvW2EtekEtWjAtOV8nJF0vLFxuICAgIHN5bWJvbGljOiAvWyUmKy0uLzo9QH5gXnwqISQjPzw+XS8sXG4gICAgZGlnaXQ6IC9bMC05XS8sXG4gICAgZGlnaXRzZXEwOiAvQGRpZ2l0Ki8sXG4gICAgeGRpZ2l0OiAvWzAtOUEtWmEtel0vLFxuICAgIHhkaWdpdHNlcTA6IC9AeGRpZ2l0Ki8sXG4gICAgSU5UU1A6IC9bbEx1VV0vLFxuICAgIEZMT0FUU1A6IC9bZkZsTF0vLFxuICAgIGZleHBvbmVudDogL1tlRV1bKy1dP1swLTldKy8sXG4gICAgZmV4cG9uZW50X2JpbjogL1twUF1bKy1dP1swLTldKy8sXG4gICAgZGVjaWV4cDogL1xcLlswLTldKkBmZXhwb25lbnQ/LyxcbiAgICBoZXhpZXhwOiAvXFwuWzAtOWEtekEtWl0qQGZleHBvbmVudF9iaW4/LyxcbiAgICBpcnJlZ3VsYXJfa2V5d29yZHM6IC92YWxbKy1dP3xjYXNlWystXT98YWRkclxcQD98Zm9sZFxcQHxmcmVlXFxAfGZpeFxcQD98bGFtXFxAP3xsbGFtXFxAP3xwcm9wWystXT98dHlwZVsrLV0/fHZpZXdbKy1AXT98dmlld3RAP3lwZVsrLV0/fHRAP3lwZVsrLV0/fHYoaWV3KT90QD95cGVbKy1dP3xhYnN0QD95cGV8YWJzdihpZXcpP3RAP3lwZXxmb3JcXCo/fHdoaWxlXFwqPy8sXG4gICAgRVNDSEFSOiAvW250dmJyZmFcXFxcXFw/J1wiXFwoXFxbXFx7XS8sXG4gICAgc3RhcnQ6ICdyb290JyxcbiAgICAvLyBUaGUgbWFpbiB0b2tlbml6ZXIgZm9yIEFUUy9Qb3N0aWF0c1xuICAgIC8vIHJlZmVyZW5jZTogaHR0cHM6Ly9naXRodWIuY29tL2dpdGh3eGkvQVRTLVBvc3RpYXRzL2Jsb2IvbWFzdGVyL3NyYy9wYXRzX2xleGluZy5kYXRzXG4gICAgdG9rZW5pemVyOiB7XG4gICAgICAgIHJvb3Q6IFtcbiAgICAgICAgICAgIC8vIGxleGluZ19ibGFua3NlcTBcbiAgICAgICAgICAgIHsgcmVnZXg6IC9bIFxcdFxcclxcbl0rLywgYWN0aW9uOiB7IHRva2VuOiAnJyB9IH0sXG4gICAgICAgICAgICAvLyBOT1RFOiAoKikgaXMgYW4gaW52YWxpZCBNTC1saWtlIGNvbW1lbnQhXG4gICAgICAgICAgICB7IHJlZ2V4OiAvXFwoXFwqXFwpLywgYWN0aW9uOiB7IHRva2VuOiAnaW52YWxpZCcgfSB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlZ2V4OiAvXFwoXFwqLyxcbiAgICAgICAgICAgICAgICBhY3Rpb246IHsgdG9rZW46ICdjb21tZW50JywgbmV4dDogJ2xleGluZ19DT01NRU5UX2Jsb2NrX21sJyB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlZ2V4OiAvXFwoLyxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdAYnJhY2tldHMnIC8qeyB0b2tlbjogJ2RlbGltaXRlci5wYXJlbnRoZXNpcycgfSovXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlZ2V4OiAvXFwpLyxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdAYnJhY2tldHMnIC8qeyB0b2tlbjogJ2RlbGltaXRlci5wYXJlbnRoZXNpcycgfSovXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlZ2V4OiAvXFxbLyxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdAYnJhY2tldHMnIC8qeyB0b2tlbjogJ2RlbGltaXRlci5icmFja2V0JyB9Ki9cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmVnZXg6IC9cXF0vLFxuICAgICAgICAgICAgICAgIGFjdGlvbjogJ0BicmFja2V0cycgLyp7IHRva2VuOiAnZGVsaW1pdGVyLmJyYWNrZXQnIH0qL1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZWdleDogL1xcey8sXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnQGJyYWNrZXRzJyAvKnsgdG9rZW46ICdkZWxpbWl0ZXIuYnJhY2UnIH0qL1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZWdleDogL1xcfS8sXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnQGJyYWNrZXRzJyAvKnsgdG9rZW46ICdkZWxpbWl0ZXIuYnJhY2UnIH0qL1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIGxleGluZ19DT01NQVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlZ2V4OiAvLFxcKC8sXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnQGJyYWNrZXRzJyAvKnsgdG9rZW46ICdkZWxpbWl0ZXIucGFyZW50aGVzaXMnIH0qL1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgcmVnZXg6IC8sLywgYWN0aW9uOiB7IHRva2VuOiAnZGVsaW1pdGVyLmNvbW1hJyB9IH0sXG4gICAgICAgICAgICB7IHJlZ2V4OiAvOy8sIGFjdGlvbjogeyB0b2tlbjogJ2RlbGltaXRlci5zZW1pY29sb24nIH0gfSxcbiAgICAgICAgICAgIC8vIGxleGluZ19BVFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlZ2V4OiAvQFxcKC8sXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnQGJyYWNrZXRzJyAvKiB7IHRva2VuOiAnZGVsaW1pdGVyLnBhcmVudGhlc2lzJyB9Ki9cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmVnZXg6IC9AXFxbLyxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdAYnJhY2tldHMnIC8qIHsgdG9rZW46ICdkZWxpbWl0ZXIuYnJhY2tldCcgfSovXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlZ2V4OiAvQFxcey8sXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnQGJyYWNrZXRzJyAvKnsgdG9rZW46ICdkZWxpbWl0ZXIuYnJhY2UnIH0qL1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIGxleGluZ19DT0xPTlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlZ2V4OiAvOjwvLFxuICAgICAgICAgICAgICAgIGFjdGlvbjogeyB0b2tlbjogJ2tleXdvcmQnLCBuZXh0OiAnQGxleGluZ19FRkZFQ1RfY29tbWFzZXEwJyB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLypcbiAgICAgICAgICAgIGxleGluZ19ET1Q6XG5cbiAgICAgICAgICAgIC4gLy8gU1lNQk9MSUMgPT4gbGV4aW5nX0lERU5UX3N5bVxuICAgICAgICAgICAgLiBGTE9BVERPVCA9PiBsZXhpbmdfRkxPQVRfZGVjaWV4cFxuICAgICAgICAgICAgLiBESUdJVCA9PiBUX0RPVElOVFxuICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHsgcmVnZXg6IC9cXC5Ac3ltYm9saWMrLywgYWN0aW9uOiB7IHRva2VuOiAnaWRlbnRpZmllci5zeW0nIH0gfSxcbiAgICAgICAgICAgIC8vIEZMT0FURE9UIGNhc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZWdleDogL1xcLkBkaWdpdCpAZmV4cG9uZW50QEZMT0FUU1AqLyxcbiAgICAgICAgICAgICAgICBhY3Rpb246IHsgdG9rZW46ICdudW1iZXIuZmxvYXQnIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IHJlZ2V4OiAvXFwuQGRpZ2l0Ky8sIGFjdGlvbjogeyB0b2tlbjogJ251bWJlci5mbG9hdCcgfSB9LFxuICAgICAgICAgICAgLy8gbGV4aW5nX0RPTExBUjpcbiAgICAgICAgICAgIC8vICckJyBJREVOVEZTVCBJREVOVFJTVCogPT4gbGV4aW5nX0lERU5UX2RsciwgXyA9PiBsZXhpbmdfSURFTlRfc3ltXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmVnZXg6IC9cXCRASURFTlRGU1RASURFTlRSU1QqLyxcbiAgICAgICAgICAgICAgICBhY3Rpb246IHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdAa2V5d29yZHNfZGxyJzogeyB0b2tlbjogJ2tleXdvcmQuZGxyJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0BkZWZhdWx0JzogeyB0b2tlbjogJ25hbWVzcGFjZScgfSAvLyBtb3N0IGxpa2VseSBhIG1vZHVsZSBxdWFsaWZpZXJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBsZXhpbmdfU0hBUlA6XG4gICAgICAgICAgICAvLyAnIycgSURFTlRGU1QgSURFTlRSU1QqID0+IGxleGluZ19pZGVudF9zcnAsIF8gPT4gbGV4aW5nX0lERU5UX3N5bVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlZ2V4OiAvXFwjQElERU5URlNUQElERU5UUlNUKi8sXG4gICAgICAgICAgICAgICAgYWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2VzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnQGtleXdvcmRzX3NycCc6IHsgdG9rZW46ICdrZXl3b3JkLnNycCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdAZGVmYXVsdCc6IHsgdG9rZW46ICdpZGVudGlmaWVyJyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gbGV4aW5nX1BFUkNFTlQ6XG4gICAgICAgICAgICB7IHJlZ2V4OiAvJVxcKC8sIGFjdGlvbjogeyB0b2tlbjogJ2RlbGltaXRlci5wYXJlbnRoZXNpcycgfSB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlZ2V4OiAvXiV7KCN8XFxefFxcJCk/LyxcbiAgICAgICAgICAgICAgICBhY3Rpb246IHtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW46ICdrZXl3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogJ0BsZXhpbmdfRVhUQ09ERScsXG4gICAgICAgICAgICAgICAgICAgIG5leHRFbWJlZGRlZDogJ3RleHQvamF2YXNjcmlwdCdcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyByZWdleDogL14lfS8sIGFjdGlvbjogeyB0b2tlbjogJ2tleXdvcmQnIH0gfSxcbiAgICAgICAgICAgIC8vIGxleGluZ19RVU9URVxuICAgICAgICAgICAgeyByZWdleDogLydcXCgvLCBhY3Rpb246IHsgdG9rZW46ICdkZWxpbWl0ZXIucGFyZW50aGVzaXMnIH0gfSxcbiAgICAgICAgICAgIHsgcmVnZXg6IC8nXFxbLywgYWN0aW9uOiB7IHRva2VuOiAnZGVsaW1pdGVyLmJyYWNrZXQnIH0gfSxcbiAgICAgICAgICAgIHsgcmVnZXg6IC8nXFx7LywgYWN0aW9uOiB7IHRva2VuOiAnZGVsaW1pdGVyLmJyYWNlJyB9IH0sXG4gICAgICAgICAgICBbLygnKShcXFxcQEVTQ0hBUnxcXFxcW3hYXUB4ZGlnaXQrfFxcXFxAZGlnaXQrKSgnKS8sIFsnc3RyaW5nJywgJ3N0cmluZy5lc2NhcGUnLCAnc3RyaW5nJ11dLFxuICAgICAgICAgICAgWy8nW15cXFxcJ10nLywgJ3N0cmluZyddLFxuICAgICAgICAgICAgLy8gbGV4aW5nX0RRVU9URVxuICAgICAgICAgICAgWy9cIi8sICdzdHJpbmcucXVvdGUnLCAnQGxleGluZ19EUVVPVEUnXSxcbiAgICAgICAgICAgIC8vIGxleGluZ19CUVVPVEVcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZWdleDogL2BcXCgvLFxuICAgICAgICAgICAgICAgIGFjdGlvbjogJ0BicmFja2V0cycgLyogeyB0b2tlbjogJ2RlbGltaXRlci5wYXJlbnRoZXNpcycgfSovXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gVE9ETzogb3RoZXJ3aXNlLCB0cnkgbGV4aW5nX0lERU5UX3N5bVxuICAgICAgICAgICAgeyByZWdleDogL1xcXFwvLCBhY3Rpb246IHsgdG9rZW46ICdwdW5jdHVhdGlvbicgfSB9LFxuICAgICAgICAgICAgLy8gbGV4aW5nX0lERU5UX2FscDpcbiAgICAgICAgICAgIC8vIE5PVEU6ICg/IXJlZ2V4KSBpcyBzeW50YXggZm9yIFwibm90LWZvbGxvd2VkLWJ5XCIgcmVnZXhcbiAgICAgICAgICAgIC8vIHRvIHJlc29sdmUgYW1iaWd1aXR5IHN1Y2ggYXMgZm9yZWFjaCRmd29yayBiZWluZyBpbmNvcnJlY3RseSBsZXhlZCBhcyBbZm9yXSBbZWFjaCRmd29ya10hXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmVnZXg6IC9AaXJyZWd1bGFyX2tleXdvcmRzKD8hQElERU5UUlNUKS8sXG4gICAgICAgICAgICAgICAgYWN0aW9uOiB7IHRva2VuOiAna2V5d29yZCcgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZWdleDogL0BJREVOVEZTVEBJREVOVFJTVCpbPCFcXFtdPy8sXG4gICAgICAgICAgICAgICAgYWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2VzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBkeW5sb2FkIGFuZCBzdGFsb2FkIHNob3VsZCBiZSBzcGVjaWFsbHkgcGFyc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBkeW5sb2FkIHdoaXRlc3BhY2UrIFwic3BlY2lhbF9zdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBzcGVjaWFsIHN0cmluZyBpcyByZWFsbHk6XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgJy8nICdcXFxcJyAnLicgPT4gcHVuY3R1YXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICh7XFwkKShbYS16QS1aX11bYS16QS1aXzAtOV0qKSh9KSA9PiBwdW5jdHVhdGlvbixrZXl3b3JkLHB1bmN0dWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBbXlwiXSA9PiBpZGVudGlmaWVyL2xpdGVyYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICdAa2V5d29yZHMnOiB7IHRva2VuOiAna2V5d29yZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdAa2V5d29yZHNfdHlwZXMnOiB7IHRva2VuOiAndHlwZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdAZGVmYXVsdCc6IHsgdG9rZW46ICdpZGVudGlmaWVyJyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gbGV4aW5nX0lERU5UX3N5bTpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZWdleDogL1xcL1xcL1xcL1xcLy8sXG4gICAgICAgICAgICAgICAgYWN0aW9uOiB7IHRva2VuOiAnY29tbWVudCcsIG5leHQ6ICdAbGV4aW5nX0NPTU1FTlRfcmVzdCcgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgcmVnZXg6IC9cXC9cXC8uKiQvLCBhY3Rpb246IHsgdG9rZW46ICdjb21tZW50JyB9IH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmVnZXg6IC9cXC9cXCovLFxuICAgICAgICAgICAgICAgIGFjdGlvbjogeyB0b2tlbjogJ2NvbW1lbnQnLCBuZXh0OiAnQGxleGluZ19DT01NRU5UX2Jsb2NrX2MnIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBBUy0yMDE2MDYyNzogc3BlY2lmaWNhbGx5IGZvciBlZmZlY3QgYW5ub3RhdGlvbnNcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZWdleDogLy08fD08LyxcbiAgICAgICAgICAgICAgICBhY3Rpb246IHsgdG9rZW46ICdrZXl3b3JkJywgbmV4dDogJ0BsZXhpbmdfRUZGRUNUX